1

選択ドロップダウン メニューがあるネストされたフォームがあります。

「送信」ボタンが押されたときに送信される属性に、選択したアイテムの ID を渡すにはどうすればよいですか?

私の状況では、ネストされたフォームのパーシャルは次のようになります。

=select("dish", "menu_id", Menu.all.collect {|r| [ r.name, r.id ] }, {:include_blank => 'Choose a Menu'})  
=f.hidden_field :_destroy
=f.text_field :name, placeholder: "Name"
=f.text_field :price, placeholder: "Price"
=link_to "X", '#', :class => "remove_fields"

送信ボタンを押すと、ターミナル/コンソールに以下がデータベースに送信されていることが表示されますが、同じ入力を共有していないためmenu_id、ドロップダウン メニューの が の一部ではないことに気付くでしょう。他の 2 つのフィールド。dishes_attributesidname

... "dishes_attributes"=>{"1342759486320"=>{"_destroy"=>"false", "name"=>"Dish 1", "price"=>"32"} ...

HTML ソース コードから、nameおよびprice入力フィールドに次のidおよびが割り当てられnameます。

<input id="side_dish_dishes_attributes_1342759902918_name" name="side_dish[dishes_attributes][1342759902918][name]" placeholder="Name" size="30" type="text"/>
<input id="side_dish_dishes_attributes_1342759902918_price" name="side_dish[dishes_attributes][1342759902918][price]" placeholder="Price" size="30" type="text"/>

しかし、私のselectドロップダウンは次のようになります。

<select id="dish_menu_id" name="dish[menu_id]">
  <option value="">Choose a Menu</option>
  <option value="1">Menu 1</option>
  <option value="2">Menu 2</option>
</select>

_formページでは、このパーシャルを呼び出す呼び出しが次のようになります。

=link_to_add_fields "Add New Dish", f, :dishes

私のからこのようにlink_to_add_fields見えるとhelpers/application_helper.rb

def link_to_add_fields(name, f, association)
  new_object = f.object.send(association).klass.new
  id = new_object.object_id
  fields = f.fields_for(association, new_object, child_index: id) do |builder|
    render(association.to_s.singularize + "_fields", f: builder)
  end
  link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
end
4

1 に答える 1

2

この行の代わりに

=select("dish", "menu_id", Menu.all.collect {|r| [ r.name, r.id ] }, {:include_blank => 'Choose a Menu'})  

フォームオブジェクトで使用する

=f.select("menu_id", Menu.all.collect {|r| [ r.name, r.id ] }, {:include_blank => 'Choose a Menu'})

これがあなたのIDの問題と料理の属性の一部を整理することを願っています

于 2012-07-20T06:47:43.487 に答える