Rails 3: Perché un select non passa il giusto valore?
-
11-10-2019 - |
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"},...}
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?