Frage

Ich habe folgendes Auswahlfeld, das erstellt wurde verschachteltes Formular:

<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" zu f.select Optionen erstellt wurde.

Das Problem ist, dass egal, was Option ausgewählt ist, der übermittelte Wert ist immer "22".

bemerkte ich, dass ein versteckter Eingang geschaffen, die ich verursacht das Problem glauben:

<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 zu diesem verborgenen Eingabefeld führen könnte erzeugt werden?


Relevante Code der 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 sehe hier immer das gleiche (egal welche Option ausgewählt ist):

"product"=>{"shop_attributes"=>{"id"=>"22"},...}
War es hilfreich?

Lösung 2

Das Problem ist, wie ich in der Frage erwähnt, das verborgenen Eingabefeld mit dem gleichen id als select.

öffnete ich eine andere Frage zu untersuchen, warum dies geschieht.

Andere Tipps

Es ist nichts falsch mit den HTML erzeugt Schienen. Es ist wahrscheinlich so, wie Sie es in Ihrem Controller sind erreichbar. Könnten Sie den ursprünglichen Schienen Code schreiben, dass diese HTML und den generierten Code Sie verwenden, um es zu verarbeiten?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top