Объединение нескольких моделей в форме Rails для создания нового объекта

У меня есть две модели, история и категория. Используя форму для Story#newЯ хотел бы иметь возможность сохранить внешний ключ для категории.

Для отображения данных выбора из категории на Story#new Страница формы, которую я использовал:

<%= collection_select(:category , :category, Category.all , :id, :category, {:prompt => 'Select Category...'}) %>

Как я могу сохранить category_id на недавно созданный объект Story?


История имеет атрибуты: industry_id а также user_idКатегория имеет атрибут namedevelopment.log говорит мне следующее: (похоже, он пытается добавить новую категорию (99) в таблицу категорий

Started POST "/stories" for 127.0.0.1 at 2012-02-10 17:32:56 -0600
 Processing by StoriesController#create as HTML
story"=>{"industry_id"=>"8", "user_id"=>"8"}, "category"=>{"category"=>"99"}, "commit"=>"Create Story"}

1 ответ

Решение

Я думаю, что вам нужно изменить параметры на collection_select, Первый параметр - это название модели. Второй параметр - это имя атрибута модели, которому будет присвоено значение. Четвертый параметр - это метод Category объект для использования в качестве текстового значения опции выбора.

Я считаю, что это должно выглядеть так:

<%= collection_select(:story , :category_id, Category.all , :id, :name, {:prompt => 'Select Category...'}) %>

Вы также можете посмотреть на вложенные атрибуты ActiveRecord.

Другие вопросы по тегам