2011-11-16 37 views
10

Mam model o nazwie Category i inny model produktu. Mają stosunek has_many i belongs_to. Ale kod moim zdaniemMetoda collection_select daje błąd w Rails 3.1.1

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

daje mi

undefined method `merge' for :name:Symbol 

Wszelkie pojęcia co jest nie tak?

Odpowiedz

37

Są szanse masz coś takiego:

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

Ponieważ f jest już przywiązany do product, nie trzeba umieścić go jako pierwszy argument, więc powinno być po prostu:

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

Albo, nie można używać f.:

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

Th pomógł. Dziękuję Ci. Czy mógłbyś wyjaśnić koncepcyjnie, co tam było nie tak. Pomoc doceniona. –

+0

Użycie form_for eliminuje potrzebę umieszczania ': product' na każdym polu. Przeczytaj to, mówi o tym, jak rozszerza część "f": http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for –

+0

Zetknąłem się z tym błędem, gdy próbowałem do implementacji niestandardowej form_helper do użytku z Bootstrap na Twitterze. Jestem trochę nowy w Rails, a kiedy znalazłem twoją odpowiedź, naprawdę otworzyło mi to oczy. Dzięki, problem został naprawiony! Wielkie dzięki!! – MattSlay

Powiązane problemy