2012-02-11 1 views
0

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

Чтобы отобразить данные выбора из категории на странице Story#new формы я использовал:

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

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


История имеет атрибуты: industry_id и user_id, категория имеет атрибут name development.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"} 
+0

Есть ли история 'принадлежит_то' Категория? Как складываются ассоциации? – Substantial

+0

да: класс 'История wantrapreneur

+0

так Ях на самом деле история has_many категории – wantrapreneur

ответ

0

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

Я считаю, что это должно выглядеть следующим образом:

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

Вы также можете посмотреть на ActiveRecord nested attributes.

+0

Это точный ответ, спасибо Brandan! Я все еще сохранял его в модели Category, потому что первым аргументом был ': category' – wantrapreneur