2010-12-20 9 views
0

私は、ネストされたフォームを使用して作成された以下の選択ボックスがあります。Rails 3:なぜ選択ボックスが正しい値を渡しませんか?

<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"です。 id=product_shop_attributes_idとの2つの要素があり、そのため

<input type="hidden" value="22" name="product[shop_attributes][id]" 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 %> 

オプションi選択されたレール:

+1

選択する必要はありません。選択 - モデルフォームを使用しています。あなたはselect_tagでそれを必要とします。 –

+0

私は同意します、ありがとう! –

答えて

1

問題は、私が質問したように、同じidselectの隠れた入力フィールドです。

私はseparate questionを開いて、なぜこれが起こるのか調べました。

1

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

+0

質問に関連する情報を追加しました。ありがとう! –

+0

私の更新を見てください。同じIDの隠しフィールドが生成されていることに気付きました。何が原因でしょうか? –

+0

ERBの残りの部分を貼り付けてください。 –

関連する問題