Разница между двумя вариантами f.select - PullRequest
2 голосов
/ 28 октября 2010

Надеюсь, это просто быстро ....

У меня есть форма для редактирования товара, и каждый товар относится к категории. В форме form_for (@product) я могу заполнить поле выбора для категорий несколькими способами:

<%= f.select :category_id, Category.find(:all).collect{|c| [c.category, c.id]}, :prompt => "Pick a Category" %>

или

<%= f.select :category_id, options_from_collection_for_select(Category.find(:all), :id, :category) %>

Первый параметр запоминает категорию при редактировании продукта, второй - нет. Кто-нибудь может просветить меня, почему? Есть ли способ использовать options_from_collection_for_select в этом сценарии и запомнить его при редактировании?

Cheers, Адам

Ответы [ 3 ]

4 голосов
/ 01 января 2012

Ответ Codeglot должен был быть:

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

(см. Rails: неопределенный метод `map 'для ингредиента для объяснения)

1 голос
/ 28 октября 2010
<%= f.collection_select :category_id, Category, :id , :name %>

убедитесь, что вы изменили :name на поле, которое вы хотите отобразить.Это вероятно :name или :title

0 голосов
/ 28 октября 2010

Попробуйте это:

<%= f.select :category_id, options_from_collection_for_select(Category.find(:all), :id, :category, params[:category_id].to_i) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...