class Post < ActiveRecord::Base
has_many :comments
accepts_nested_attributes_for :comments
#...
class Comment < ActiveRecord::Base
belongs_to :post
#...
次に、フォームで
form_for @post do |f|
f.fields_for :comments do |c|
c.text_field :title
#...
f.submit
これにより、アクティブなレコードの accept_nested_attributes_for を介して関連付けられたオブジェクトが作成され、個別の comments_controller は必要ありません。投稿の更新中に関連オブジェクトの作成を処理している投稿コントローラーに送信しています。
comments_controller を使用すると、次の 2 つのいずれかを行うことができます。
item_id をパラメータとして comments_controller#new に送信し、アイテムを取得して、そこから新しいコメントを作成します
@post = Post.find(params[:item_id); @comment = @post.comments.build
フォームの非表示フィールドに post_id を入力し、通常どおりコメントを作成します
# in the controller
@comment = Comment.create(params[:comment])
# in the view
form_for @comment do |f|
f.text_field :title
#...
f.hidden_field :post_id, value: @post.id