fields_forに渡すrelationを絞る

contentモデルの下にcontent detailモデルがあって、 accepts nested attributes forしていて、fields _forを使う場合。

1
f.fields_for :content_details do |c|

って書くと、contentに紐付く全部のcontent _detailsがformとして表示されちゃう。

第二引数にインスタンスを渡せばいいみたい。

1
f.fields_for :content_details, @content.content_details.where(state = 1) do |c|

ちなみに第二引数はnilがデフォルト引数なので

1
2
f.fields_for :content_details
f.fields_for :content_details, nil

は同じ意味になるので、インスタンス変数は値を入れなければnilなので

1
fields_for :content_details, @details

ってやって、editの時だけ@detailsに値を入れるとうまく変更したいレコードのみ抽出できて、処理を切り分けられる気がします。

Comments