2011-11-16 17 views
10

Tengo un modelo llamado Categoría y otro producto modelo. Tienen has_many y belongs_to relation. Pero el código en mi opiniónmétodo collection_select da error en Rails 3.1.1

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

me está dando

undefined method `merge' for :name:Symbol 

Cualquier idea de lo que está mal con él?

Respuesta

37

probable es que haya algo como esto:

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

Debido f ya está atado a product, que no es necesario incluirlo como su primer argumento, por lo que sólo deben ser:

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

O, no se podía utilizar f.:

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

Th en ayudado. Gracias. ¿Podría explicar conceptualmente lo que estaba mal allí? Ayuda apreciada –

+0

El uso de form_for elimina la necesidad de poner ': product' en cada campo. Lea esto, habla sobre cómo se expande la parte 'f': http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for –

+0

Me encontré con este error cuando lo intenté implementar un form_helper personalizado para usar con Twitter Bootstrap. Soy un poco nuevo en Rails, y cuando encontré tu respuesta, realmente me abrió los ojos. Gracias, para ti, problema solucionado! ¡¡Muchas muchas gracias!! – MattSlay

Cuestiones relacionadas