---
# System prepended metadata

title: Pequeño blog

---

---
title: 'Pequeño blog'
---

Crear el proyecto:

```bash
rails new lil_blog -d postgresql
```

Crear la base de datos:

```bash
rails db:create
```

>Cambiar los valores de conexión en database.yml


Crear el modelo post:

```bash
rails g model post title description
```

Crear el controlador con los métodos que necesitan vistas:

```bash
rails g controller posts index show new edit
```

Modificamos las rutas:

```ruby=
Rails.application.routes.draw do
  # get 'posts/index'
  # get 'posts/show'
  # get 'posts/new'
  # get 'posts/edit'
  resources :posts
  # Defines the root path route ("/")
  root "posts#index"
end
```

Ejecutamos la migración: 

```bash
rails db:migrate
```

Agregamos los strong params:

```ruby=3
private
def set_post
  @post = Post.find(params[:id])
end

def post_params
  params.require(:post).permit(:title, :description)
end
```

Agregamos el método create:

```ruby=15
  def create
    @post = Post.new(post_params)

    respond_to do |format|
      if @post.save
        format.html { redirect_to post_url(@post), notice: "Post fue creado correctamente"}
        format.json {render :show, status: :created, location: @post}
      else
        format.html{render :new, statu: :unprocessable_entity}
        format.json {render json: @post.errors, status: :unprocessable_entity}
      end
    end
  end
```

Agregamos el método update:

```ruby=32
  def update
    respond_to do |format|
      if @post.update(post_params)
        format.html { redirect_to post_url(@post), notice: "Update Post"}
        format.json { render :show, status: :ok, location: @post}
      else
        format.html { render :edit, status: :unprocessable_entity}
        format.json { render json: @post.errors, status: :unprocessable_entity}
      end
    end
  end
```

