2016-07-25 2 views
0

Ich habe zwei Modelle Post und Kommentare.Rails: Wie Instanzvariable in neue Aktion zu initialisieren

class Post < ActiveRecord::Base 
has_many :comments 
end 

class Comment < ActiveRecord::Base 
belongs_to :post 
end 

meine Form Kommentar für die Erstellung ist als unten

<%= form_for @comment , :url => post_comments_path(params[:post_id]) do |f| %> 
    <%= f.text_area :title %> 
    <%= f.submit "Add Comment" %> 
<% end %> 

Ich Verwirrung mit neuer Aktion der obigen Form habe. In der neuen Aktion kann ich die Instanzvariable @comment mit zwei Möglichkeiten initialisieren.

@comment = Comment.new 

or 

@post = Post.find(params[:id) 
@comment = @post.comments.build(set_params) 

meine Frage ist, was ist der Unterschied zwischen Comment.new und @ post.comments.build (set_params).

+0

Der erste Kommentar hat keine 'post_id'-Eigenschaft. Das ist der Unterschied –

+0

Je nachdem, wie Sie mit der Erstellung von Kommentaren umgehen, ist das eine oder andere Formular möglicherweise vorzuziehen. –

Antwort

0

Letzteres ist bevorzugt, weil post_id auf den Kommentar gesetzt wird.

Verwandte Themen