Ich habe folgendes Auswahlfeld, das wurde mit verschachtelter Form erstellt:Schienen 3: Warum eine Auswahlbox nicht den richtigen Wert übergibt?
<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"
indem :selected => "22"
-f.select
Optionen erstellt wurde.
Das Problem ist, dass egal, welche Option ausgewählt ist, der übermittelte Wert immer "22"
ist.
bemerkte ich, dass ein versteckter Eingang geschaffen, die ich glaube, das Problem verursacht:
<input type="hidden" value="22" name="product[shop_attributes][id]" id="product_shop_attributes_id">
So gibt es zwei Elemente mit id=product_shop_attributes_id
.
Was könnte dazu führen, dass dieses versteckte Eingabefeld erzeugt wird?
Relevante Code Auswahlbox Erstellung:
<%= form_for @product do |f| %>
<%= f.fields_for :shop do |sf| %>
sf.select(:id, <options>, {:prompt => true, :selected => <default_value>})
<% end %>
<% end %>
Relevante Controller-Code:
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 %>
ich hier immer das gleiche sehen (egal was Option i s ausgewählt):
"product"=>{"shop_attributes"=>{"id"=>"22"},...}
Sie sollten nicht übergeben: ausgewählt - Sie verwenden ein Modellformular. Sie brauchen das nur mit select_tag. –
Ich stimme zu, danke! –