form_for链接到另一个控制器Rails 4

时间:2014-02-17 18:35:38

标签: ruby-on-rails

我正在尝试使用指向另一个控制器的操作构建一个表单,但它不起作用

我的表格:

<%= form_for([@product,@product.subjects.build]) do |s| %>

表单在/products/show_sujet.html.erb

中呈现

但我有这个错误:

未知属性:product_id

我不知道该怎么办?

subject.rb中

class Subject < ActiveRecord::Base
belongs_to :product
end

Product.rb

class Product < ActiveRecord::Base
has_many :comments, dependent: :destroy
has_many :subjects
validates :ean,:marque,:description, presence: true
end

非常感谢:)

1 个答案:

答案 0 :(得分:0)

看起来您在创建主题模型后没有迁移数据库。如果您这样做,请找到创建subjects表的迁移,并确保它添加product_id列。如果您没有这个,则需要使用以下命令为此创建迁移:

rails g migration addProductIdColumnToSubject product_id:integer
rake db:migrate

这将处理unknown attribute: product_id错误。

现在,如果您使用的是Rails 4,则需要将此属性添加到subjects控制器中的strong parameters

Rails 3中,您需要将:product_id添加到attr_accessible模型中的Subject声明中。