正确的连接模型嵌套形式的方法?

时间:2012-03-20 11:01:49

标签: ruby-on-rails ruby-on-rails-3

我正在尝试通过产品展示视图中的联接模型为我的Producttracklisting has_many嵌套表单。这样做的正确方法是什么?我因各种失败的尝试而遇到各种错误。 模型如下:

class Product < ActiveRecord::Base
  has_many :producttracklistings
  has_many :tracks, :through => :producttracklistings
end

class Track < ActiveRecord::Base
  has_many :producttracklistings
  has_many :products, :through => :producttracklistings
end

class Producttracklisting < ActiveRecord::Base
  belongs_to :product
  belongs_to :track
end

表格如下:

<%= form_for(@producttracklisting) do |f| %>
  <%= f.label :track_id %>
  <%= f.text_field :track_id %>
  <%= f.label :product_id %>
  <%= f.text_field :product_id %>
  <%= f.submit %>
<% end %>

我正在尝试使用以下内容将其带入产品/节目:

 <%= render 'producttracklistings/form' %>

通过上述所有内容,我得到了一个“未定义的方法`model_name',用于NilClass:Class”

提前致谢。

1 个答案:

答案 0 :(得分:3)

您要找的是accepts_nested_attributesfields_for的结合。 有关详细教程,请参阅此RailsCast Part 1part 2

PS: 我建议您将模型命名为ProductTrackListing,这会生成一个名为product_track_listings的表格。这更具可读性和“轨道方式”