2011-11-16 14 views
10

Ho un modello chiamato Category e altro prodotto modello. Hanno has_many e appartengono alla relazione. ma il codice a mio avvisoIl metodo collection_select dà errore in Rails 3.1.1

<p><%= f.collection_select(:product, :category_id, Category.all, :id, :name)%> 

mi sta dando

undefined method `merge' for :name:Symbol 

Qualsiasi idea di cosa è sbagliato con esso?

risposta

37

Probabilmente avete qualcosa di simile:

<%= form_for @product do |f| %> 

Perché f è già legato a product, non c'è bisogno di includerlo come primo argomento, quindi dovrebbe essere solo:

<%= f.collection_select :category_id, Category.all, :id, :name %> 

Oppure, non era possibile utilizzare f.:

<%= collection_select :product, :category_id, Category.all, :id, :name %> 
+0

Th aiutato. Grazie. Potresti spiegare concettualmente cosa c'era di sbagliato lì. Aiuto apprezzato. –

+0

L'utilizzo di form_for elimina la necessità di inserire ': product' su ogni campo. Leggilo, parla di come espande la parte 'f': http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for –

+0

Ho riscontrato questo errore mentre provavo per implementare un form_helper personalizzato da utilizzare con Twitter Bootstrap. Sono un po 'nuovo a Rails, e quando ho trovato la tua risposta, mi ha davvero aperto gli occhi. Grazie, a te, problema risolto! Molte molte grazie!! – MattSlay

Problemi correlati