2012-03-01 7 views
3

コントローラのパラメータをループして値を変更するにはどうすればよいですか?パラメータを正しく反復する方法

この:私は複数選択の代わりに、単一の選択ボックスを使用していますより多くのコンテキストを提供するために、

# can't convert Symbol into Integer 

... 
params[:contact][:relationships_attributes].each do |rel| 
    rel[:contact_ids] = [rel[:contact_ids]] 
end 
... 

はのエラーを返します。したがって、コントローラは配列を期待していますが、その代わりに単一の値を取得しています。ここで

は私のparamsです:

{"utf8"=>"✓", 
"_method"=>"put", 
"authenticity_token"=>"8FrW59t9vzSep+jEGceMdE/b5q69i5hrEp08yZJJk0o=", 
"contact"=> 
    {"first_name"=>"John", 
    "last_name"=>"Smith", 
    "email_addresses_attributes"=> 
    {"0"=> 
     {"value"=>"[email protected]", 
     "type"=>"Home", 
     "_destroy"=>"false", 
     "id"=>"4f4eea6dbe5a2ccf03000031" 
     }, 
     "1"=>{"value"=>"[email protected]", 
     "type"=>"Home", 
     "_destroy"=>"false", 
     "id"=>"4f4eea7dbe5a2ccf03000035" 
     } 
    }, 
    "phone_numbers_attributes"=> 
    {"0"=> 
     {"value"=>"555-334-5959", 
     "type"=>"Home", 
     "_destroy"=>"false", 
     "id"=>"4f4eea64be5a2ccf0300002c"} 
    }, 
    "addresses_attributes"=> 
    {"0"=> 
     {"type"=>"Home", 
     "street_address"=>"12345 Any Rd", 
     "city"=>"Anytown", 
     "state"=>"CO", 
     "country"=>"United States", 
     "_destroy"=>"false", 
     "id"=>"4f4eea64be5a2ccf0300002d" 
     } 
    }, 
    "relationships_attributes"=> 
    {"1330623965418"=> 
     {"contact_ids"=>"4f4e6696be5a2ca2a7000045", 
     "title"=>"Wife", 
     "_destroy"=>"false" 
     } 
    } 
    }, 
    "commit"=>"Update Contact", 
    "id"=>"4f4e6696be5a2ca2a7000045" 
} 
+0

私は私のparamsを含めるようにポストを更新@muistooshort:あなたにこのような構造を与える

params['contact']['relationships_attributes'].each do |k, v| v['contact_ids'] = [ v['contact_ids'] ] unless v['contact_ids'].is_a?(Array) end 

を。 –

答えて

18

あなたは、このようなハッシュにeachを使用します。

params[:contact][:relationships_attributes].each do |rel| 

ブロック引数、relは、実際の位置でキーを持つ2つの要素の配列であります0と位置1の値を返します。次に、ブロックがハッシュであるかのように配列にアクセスしようとします。

rel[:contact_ids] 

というエラーメッセージが表示されます。シンボルを使用して配列のインデックスを作成することはできません。

私はあなたがより多くのこのような何かやりたいと思う:

{ 
    :contact => { 
    :relationships_attributes => { 
     '1330623965418' => { 
     :contact_ids => ['4f4e6696be5a2ca2a7000045'] 
     :title => 'Wife', 
     :_destroy => 'false' 
     } 
     ... 
+0

完璧な魅力的な作品! –

関連する問題