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"},...}
¿Fue útil?

Solución 2

El problema es, como he mencionado en la pregunta, el campo de entrada oculto con el mismo id como el select.

Me abrió una cuestión aparte para investigar por qué sucede esto.

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top