Carriles 3: ¿Por qué un cuadro de selección no pasa el valor correcto?
-
11-10-2019 - |
Pregunta
Tengo el siguiente cuadro de selección que se creó utilizando la forma anidada:
<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"
se crea pasando a :selected => "22"
opciones f.select
.
El problema es que no importa qué opción está seleccionada, el valor presentado es siempre "22"
.
Me di cuenta de que se crea una entrada oculta, que creo que las causas del problema:
<input type="hidden" value="22" name="product[shop_attributes][id]" id="product_shop_attributes_id">
Por lo tanto, hay 2 elementos con id=product_shop_attributes_id
.
Lo que podría causar a este campo de entrada oculto que se genere?
código pertinente del cuadro de selección de la creación:
<%= form_for @product do |f| %>
<%= f.fields_for :shop do |sf| %>
sf.select(:id, <options>, {:prompt => true, :selected => <default_value>})
<% end %>
<% end %>
Relevant código del controlador:
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 %>
Veo aquí siempre el mismo (no importa cuál sea la opción seleccionada):
"product"=>{"shop_attributes"=>{"id"=>"22"},...}
Otros consejos
No hay nada malo con los carriles HTML generados. Es probablemente la forma en que está accediendo a ella en su controlador. Podría publicar el código raíles originales que generó este código HTML y el código que está utilizando para procesarlo?