Rails 3: Проблемы с вложенными формами и has_many: through - PullRequest
0 голосов
/ 15 декабря 2010

Вот моя модель.

Группа модель

has_many :bands_genres
has_many :genres, :through => :bands_genres

Жанр модели

has_many :bands_genres
has_many :bands, :through => :bands_genres

BandsGenre Модель

belongs_to :band
belongs_to :genre

У меня есть форма, в которой вы можете добавить новую группу, а затем выбрать жанр из выпадающего поля, извлекающего из предустановленных жанров в модели genre.

Итак, в конечном итоге мне нужно настроить форму так, чтобы когда группа добавляла свою группу и выбирала жанр, она создавала правильное соединение в модели bands_genre.

Не уверен, с чего начать с настройки формы, контроллеров и моделей для этого.

Я использую Rails 3.0.3

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Есть несколько текстовых / видео-приказов, охватывающих это, так как это популярный вариант использования. Я бы посоветовал вам взглянуть на: http://railscasts.com/episodes/73-complex-forms-part-1 или его эквивалент asciicast (который представляет собой текстовый ролик видео).

Далее я бы порекомендовал вам использовать formtastic. Управление ассоциациями происходит автоматически, что упрощает построение форм и обеспечивает чистоту кода. И да, есть поводы для этого тоже. http://railscasts.com/episodes/184-formtastic-part-1

0 голосов
/ 15 декабря 2010

Редактировать:

Band Band

has_many :genres, :as => :band_genres                                        

Жанровая модель

has_many :bands, :as => :band_genres

В вашей таблице жанров есть band_id, а в таблице групп - genre_id.

band_controller

def new
   @genres = Genre.all
   @post = Post.new
end

posts / new.html.haml (В этой части я немного не уверен, но примерно так)

- form_for @post do |f|
   = f.select :genre_id, @genres, {}
   = f.submit
...