Domanda

Ho il seguente casella di selezione che è stato creato tramite il modulo nidificato:

<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" è stato creato passando :selected => "22" alle opzioni f.select.

Il problema è che è stato selezionato non importa quale sia l'opzione, il valore inviato è sempre "22".

Ho notato che è stato creato un ingresso nascosto, che a mio avviso le cause del problema:

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

Quindi, ci sono 2 elementi con id=product_shop_attributes_id.

Che cosa potrebbe causare a questo campo di input nascosto da generare?


Codice in materia di selezionare creazione scatola:

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

codice del controller Rilevante:

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 %>

Vedo qui sempre lo stesso (non importa quale opzione è selezionata):

"product"=>{"shop_attributes"=>{"id"=>"22"},...}
È stato utile?

Soluzione 2

Il problema è, come ho già detto nella domanda, il campo di input nascosto con la stessa id come select.

Ho aperto un domanda separata per indagare il motivo per cui questo accade.

Altri suggerimenti

Non c'è niente di sbagliato con i binari generati HTML. E 'probabilmente il modo in cui si sta accedendo nel vostro controller. Potresti postare il codice rotaie originali che ha generato questo HTML e il codice che si utilizza per elaborarlo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top