תגובות לאפליקציית Rails Girls

מאת Janika Liiv, @janikaliiv

אנחנו הולכות להוסיף את האפשרות להגיב לרעיונות באפליקציית ה-railsgirls שלך.

ניתן למצוא את הוראות ההתקנה ובניית אפליקציית הרעיונות כאן.

1.הוסיפי תגובות של Scaffold

הוסיפי תגובות של Scaffold עם שם המגיב, התגובה עצמה והפניה לטבלת הרעיונות ( idea_id).

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

זה יצור קובץ מיגרציה אשר מעדכן את מסד הנתונים על הטבלה החדשה של התגובות. הריצי את המיגרציה כך:

rake db:migrate

2.הוסיפי קשרים בין המודלים

צריך לגרום לRails לדעת על הקשר בין האובייקטים השונים (רעיונות ותגובות). לרעיון אחד יכולים להיות הרבה תגובות, ואנחנו צריכים לגרום למודל לדעת את זה. פתחי את app/models/idea.rb ואחרי השורה:

class Idea < ActiveRecord::Base

הוסיפי

has_many :comments

גם מודל התגובה צריך לדעת שהוא משוייך לרעיון. פתחי את app/models/comment.rb ולאחר

class Comment < ActiveRecord::Base

הוסיפי את השורה

belongs_to :idea

3. הדפיסי למסך את טופס הוספת התגובה ואת רשימת התגובות הקיימות

פתחי את app/views/ideas/show.html.erb ואחרי image_tag

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

הוסיפי

<h3>Comments</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: 'Are you sure?' } %></p>
  </div>
<% end %>
<%= render 'comments/form' %>

בapp/controllers/ideas_controller.rb הוסיפי לאחר השורה

@idea = Idea.find(params[:id])

את

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

פתחי את app/views/comments/_form.html.erb ולאחר

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

הוסיפי את השורה

<%= f.hidden_field :idea_id %>

לבסוף, הורידי את

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

זהו! כעת צפי ברעיון שהוספת לאפליקצייה שלך ושם תוכלי לראות את טופס הוספת התגובה.