Railsでリレーショナルデータのフォームを作成する
-
22-07-2019 - |
質問
他のいくつかのテーブルと関係があるテーブルに対して表示する必要があるフォームがあります。たとえば、「ケース」テーブルがあります。 (考えて、調査官のケース)、それはhas_one申立人とhas_oneクライアントです。
フォームに、ケースデータ、クライアントデータ、および申請者データを入力するフィールドを表示したいと思います。これを実行する簡単な方法はありますので、送信時に次のように簡単になります。
case = Case.new(params[:case])
case.save
ケースデータのみのフォームを送信して保存している場合はどうでしょうか。
解決
activerecordの accepts_nested_attributes_for
メソッドを探しているように聞こえます。
- form.fields_for :claimant do |claimant_form|
= claimant_form.text_field :name
他のヒント
case.saveを呼び出すだけで機能する方法があるとは思わない。
フォームを作成するには、fields_forの使用を検討します。 http://api.rubyonrails.org/classes/ActionView/Helpers/ FormHelper.html#M001605
fields_forを使用すると、異なるPOST変数に格納されているフィールドを追加できるため、フィールドを正しく設定してから新しいメソッドで次のようなことができる可能性があります。
claimant = Claimant.new(params[:claimant])
claimant.save
それほど複雑ではありません。
ネストされたマルチの作成については、 complex-form-examples をご覧ください。 -モデルフォーム。これは、Rails 2.3の accepts_nested_attributes_for
で動作するように更新されました。
必要に応じて params [:case]
の下に関連付けをすべてネストできます。 case.save
を呼び出すと、他のすべても保存されます。