Rails 3:嵌套表单和has_many:通过时出现问题

时间:2010-12-15 04:33:59

标签: ruby-on-rails forms associations

这是我的模型设置。

乐队模型

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 个答案:

答案 0 :(得分:1)

由于它是一个受欢迎的用例,因此有很多文字/视频演员报道此内容。我鼓励你看看: http://railscasts.com/episodes/73-complex-forms-part-1或其等效的asciicast(这是一个基于文本的视频演员)。

此外,我建议你使用formtastic。自动管理关联,因此它使表单构建变得微不足道,并使代码保持整洁。是的,也有演员阵容。 http://railscasts.com/episodes/184-formtastic-part-1

答案 1 :(得分:0)

修改

乐队模型

has_many :genres, :as => :band_genres                                        

流派模式

has_many :bands, :as => :band_genres

您的流派表格为band_id,您的乐队表格为genre_id

<强> bands_controller

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

<强>文章/ new.html.haml (这部分我有点不确定,但大致如此)

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