Área de comentários para a app Rails Girls
Criado por Janika Liiv, @janikaliiv
Traduzido por Maujor, site do Maujor
Vamos aprender como criar uma área de comentários para nossa app railsgirls ideas.
As instruções para criar a app foram descritas neste documento.
1.Criando o scaffold para a área de comentários
Crie o scaffold para a área de comentários fazendo nele constar o nome de quem comenta, o corpo do comentário (conteúdo do comentário) e uma referência para a tabela ideas (idea_id
).
rails g scaffold comment user_name:string body:text idea_id:integer
Esta ação criará um arquivo de migração que permitirá ao banco de dados conhecer a nova tabela de comentários. A seguir migre as alterações feitas no banco de dados digitando no terminal o seguinte:
rake db:migrate
2.Adicione relacionamentos aos modelos
Você precisa assegurar que Rails seja capaz de identificar a conexão entre objetos (ideas e comentários). De vez que uma idea pode ter vários comentários precisamos assegurar que o modelo ideas sabe disso. Abra app/models/idea.rb e logo após a linha:
class Idea < ActiveRecord::Base
acrescente o seguinte:
has_many :comments
Um comentário precisa saber que ele pertence a uma idea. Assim, abra app/models/comment.rb
e logo após a linha:
class Comment < ActiveRecord::Base
acrescente a seguinte linha:
belongs_to :idea
3.Mostrar o formulário de comentários e os comentários existentes
Abra app/views/ideas/show.html.erb é depois da tag de imagem (image_tag)
<%= image_tag(@idea.picture_url, :width => 600) if @idea.picture.present? %>
acrescente a seguinte linha:
<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: 'Tem certeza?' } %></p>
</div>
<% end %>
<%= render 'comments/form' %>
Em app/controllers/ideas_controller.rb
acrescente a ação mostrar logo após a linha:
@comments = @idea.comments.all
@comment = @idea.comments.build
Abra app/views/comments/_form.html.erb
e logo após a linha:
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body %>
</div>
acrescente a seguinte linha:
<%= f.hidden_field :idea_id %>
a seguir remova
<div class="field">
<%= f.label :idea_id %><br>
<%= f.number_field :idea_id %>
</div>
Pronto! Visualize uma idea que você tenha acrescentado à sua aplicação e você verá ali o formulário para inserir um comentário bem como a funcionalidade para deletar comentários.