2010-12-20 4 views
0

Ich habe folgendes Auswahlfeld, das wurde mit verschachtelter Form erstellt:Schienen 3: Warum eine Auswahlbox nicht den richtigen Wert übergibt?

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

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

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

<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 könnte dazu führen, dass dieses versteckte Eingabefeld erzeugt wird?


Relevante Code 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 hier immer das gleiche sehen (egal was Option i s ausgewählt):

"product"=>{"shop_attributes"=>{"id"=>"22"},...} 
+1

Sie sollten nicht übergeben: ausgewählt - Sie verwenden ein Modellformular. Sie brauchen das nur mit select_tag. –

+0

Ich stimme zu, danke! –

Antwort

1

Das Problem ist, wie ich in der Frage erwähnt habe, das versteckte Eingabefeld mit der gleichen id wie die select.

Ich öffnete eine separate question, um zu untersuchen, warum dies passiert.

1

Es ist nichts falsch mit den Schienen erzeugt HTML. Es ist wahrscheinlich die Art und Weise, wie Sie auf Ihren Controller zugreifen. Könnten Sie den ursprünglichen Rails-Code, der diesen HTML-Code generiert hat, und den Code, den Sie zur Verarbeitung verwenden, posten?

+0

Ich habe die relevante Information zur Frage hinzugefügt. Vielen Dank! –

+0

Bitte sehen Sie mein Update. Ich habe festgestellt, dass ein verstecktes Feld mit derselben ID generiert wird. Was könnte das verursachen? –

+0

Bitte fügen Sie den Rest Ihres ERB ein. –