Permita Comentários no seu App

Criado por Janika Liiv, @janikaliiv

Nós vamos adicionar a possibilidade de comentar em idéias na sua aplicação.

1.Crie o scaffold para Comentários

Crie um scaffold para Comentários, com o nome de quem está comentando, o corpo (body) do comentário e com a referência para a tabela de idéias. (idea_id).

rails g scaffold comment user_name:string body:text idea_id:integer

Isso vai criar um arquivo de migração que avisa ao seu banco de dados sobre a nova tabela de comentários. Rode a migração usando:

rake db:migrate

2.Adicione relationamentos aos modelos

Você precisa ter certeza de que o Rails conhece o relationamento entre os objetos (idéias e comentários). Como uma idéia pode ter muitos comentários nós temos que ter certeza de que o modelo de Idéias (idea), sabe disso isso.

Abre o arquivo app/models/idea.rb e depois da linha

class Idea < ActiveRecord::Base

adicione

has_many :comments

O comentário também precisa saber que pertence a uma Idéia. Então abra o arquivo app/models/comment.rb e depois da linha

class Comment < ActiveRecord::Base

adicione a linha

belongs_to :idea

3.Renderize o formulário de comentários e os formulários existentes

Abra o arquivo app/views/ideas/show.html.erb e depois da image_tag

<%= image_tag(@idea.picture_url, :width => 600) if @idea.picture.present? %>

adicione

<h3>Comentários</h3>
<% @comments.each do |comment| %>
  <div>
    <strong><%= comment.user_name %></strong>
    <br />
    <p><%= comment.body %></p>
    <p><%= link_to 'Delete', comment_path(comment), method: :delete, data: { confirm: 'Você tem certeza?' } %></p>
  </div>
<% end %>
<%= render 'comments/form' %>

Em app/controllers/ideas_controller.rb adicione na ação “show”:

@comments = @idea.comments.all
@comment = @idea.comments.build

Abra o arquivo app/views/comments/_form.html.erb e depois do código

  <div class="field">
    <%= f.label :body %><br />
    <%= f.text_area :body %>
  </div>

adicione a linha

<%= f.hidden_field :idea_id %>

então, remova

<div class="field">
  <%= f.label :idea_id %><br>
  <%= f.number_field :idea_id %>
</div>

E é isso. Agora vamos ver uma Idéia que você inseriu na sua aplicação e lá você deve ver o formulário para inserir um comentário assim como para deletar comentários antigos.

Anterior   Próximo