2016-04-19 20 views
1

私が持っていると言うと、ワークアウト多くのモデルがあります。 ワークアウトは、のネストされた属性を受け入れます。です。フォームからオブジェクトの配列を取得する方法は?

"workout"=>{"workout_title"=>"title", 
    "items"=>{ 
    ["name"=>"first item", "name"=>"second item"] 
    } 
} 

をしかし、私は私だけで解決することができますどのようにこの

"workout"=>{"workout_title"=>"title", 
    "items"=>{"name"=>"second_item"} 
} 

のようにそれを得ることができたいくつかの理由のために:私は次のように配列内項目のパラメータを送信したいのform_for使い方この?

ここに、上記のパラメータを生成するフォームがあります。

= form_for :workout, url: welcome_index_path, method: :post do |f| 
    = f.text_field :workout_title 
    = f.fields_for :items, child_index: 1 do |builder| 
    = builder.text_field :name 
    = f.fields_for :items, child_index: 2 do |builder| 
    = builder.text_field :name, id: 'workout_items_name_2', name: 'workout[items][name]' 
    = f.submit 'Go' 
+1

最初の 'builder.text_field'には' name: 'workout [items] [name]' 'を入れていません。 –

+0

@PetrGazarovこのケースでは2番目のパラメータだけが送信されています。 –

+0

'name: 'workout [items] [name]' 'を削除し、強いパラメタでは' name [] 'を与えます。 – Pavan

答えて

2

なぜあなたにすべてのアイテムを生成させませんか?

= form_for @workout, url: welcome_index_path, method: :post do |f| 
    = f.text_field :title 
    = f.fields_for :items do |builder| 
    = builder.text_field :name 
    = f.submit 'Go' 

@workoutには、すべてのアイテムのテキストフィールドが表示されます。また、params[:workout][:item_attributes]に商品をお届けします。さらに、Railsの@post.save(params[:workout])も関連項目を作成します。

+0

PG :: UndefinedTable:ERROR:relation "items"が存在しません。このエラーは、私が変更したときに発生します:ワークアウト@ワークアウト –

+0

エラーは、あなたが "アイテム"テーブルを持っていないと言います。あなたの質問では、あなたはあなたが持っていると言いました。移行を実行すると思います。 – Uzbekjon

+0

この場合、「ワークアウト」=> {"workout_title" => "title"}を送信する唯一の入力があります –

関連する問題