Сохранение collection_select с has_many с помощью Rails - PullRequest
2 голосов
/ 18 марта 2012

Я настраиваю has_many, связываясь с моими моделями, и пытаюсь создать форму, в которой я могу добавить несколько жанров к представленной песне. Я использую помощник collection_select для этого. Вот отрывки о том, как мой код настроен.

Модель песни

has_many :song_genres
has_many :genres, :through => :song_genres

Жанр Модель

has_many :song_genres
has_many :songs, :through => :song_genres

Модель жанра песни

belongs_to :song
belongs_to :genre

Тогда в моем new.html.erb У меня есть это

collection_select :song, :genres, Genre.all, :id, :name, {:selected => 1}, {:multiple => true}

Когда я отправляю форму, я получаю

Can't mass-assign protected attributes: genres

ошибка

Я знаю, что мне здесь чего-то не хватает. Может кто-нибудь помочь мне, как правильно настроить это?

Спасибо!

1 Ответ

2 голосов
/ 18 марта 2012

Попробуйте следующим образом:

collection_select :song, :genre_id, Genre.all, :id, :name, {:selected => 1}, {:multiple => true}

Как указано в Руководстве по Rails : «Если вы используете select (или аналогичные помощники, такие как collection_select, select_tag), чтобы установить ассоциацию own_toВы должны передать имя внешнего ключа (в приведенном выше примере city_id), а не имя самой ассоциации. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...