質問

ネストされたフォームを使用して作成された次の選択ボックスがあります。

<select name="product[shop_attributes][id]" id="product_shop_attributes_id">
  <option value="23">KMART</option>
  <option value="24">Super Shop</option>
  <option selected="selected" value="22">TARGET</option>
  <option value="new">Create New Shop</option>
</select>

selected="selected" 追い越して作成されました :selected => "22"f.select オプション。

問題は、どのオプションが選択されていても、提出された値は常に "22".

隠された入力が作成されていることに気付きましたが、これは問題を引き起こすと思います。

<input type="hidden" value="22" name="product[shop_attributes][id]" id="product_shop_attributes_id">

したがって、2つの要素があります id=product_shop_attributes_id.

この隠された入力フィールドを生成するには何が生成されますか?


選択ボックス作成の関連コード:

<%= form_for @product do |f| %>
  <%= f.fields_for :shop do |sf| %>
    sf.select(:id, <options>, {:prompt => true, :selected => <default_value>})
  <% end %>
<% end %>

関連するコントローラーコード:

def edit
  @product = Product.find(params[:id]) # the select box indeed gets it's initial value from @product
end

def update
  @temp = params.inspect
end

update.html.erb:

<%= @temp %>

ここではいつも同じように見えます(選択したオプションに関係なく):

"product"=>{"shop_attributes"=>{"id"=>"22"},...}
役に立ちましたか?

解決 2

問題は、質問で述べたように、同じものを持つ隠された入力フィールドです id として select.

私はAを開けました 別々の質問 なぜこれが起こるのかを調査するため。

他のヒント

Rails生成されたHTMLには何の問題もありません。それはおそらくあなたがあなたのコントローラーでそれにアクセスする方法です。このHTMLを生成した元のRailsコードと、処理するために使用しているコードを投稿できますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top