我很难找到与simple_form合作的协会。
我有以下型号。
class Product < ActiveRecord::Base
belongs_to :Retailer
end
和
class Retailer < ActiveRecord::Base
has_many :Products
end
我的表单部分(products / _form.html.erb)包含以下内容
<%= simple_form_for(@product) do |f| %>
...
<% f.input :currency %>
<% f.association :retailer %>
...
它没有关联,但有了它我得到以下错误:
undefined method `retailer_id' for #<Product:0x007ffbe0f7d530>
我(显然)对此很新,但未能解决这个问题。
编辑:选中我会运行迁移并且它们是最新的。零售商表有一个id列!
> Retailer.all
Retailer Load (0.2ms) SELECT "retailers".* FROM "retailers"
=> [#<Retailer id: 1, name: "Retailer 1" etc...
chema文件:
ActiveRecord::Schema.define(:version => 20120308195055) do
create_table "alerts", :force => true do |t|
t.string "url", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "products", :force => true do |t|
t.string "title", :null => false
t.integer "price_cents", :default => 0, :null => false
t.string "currency", :null => false
t.string "asin", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "retailers", :force => true do |t|
t.string "name", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
end
答案 0 :(得分:0)
由于您的模型和表单中分别有belongs_to :Retailer
和<% f.association :retailer %>
,因此您需要在product表中添加retailer_id
列。
您在迁移文件中缺少t.references :retailer
来创建产品表。
这就是为什么,我引用你的话说“它没有关联就能正常工作,但错误就是undefined method 'retailer_id' for #<Product:0x007ffbe0f7d530>
”
是的,零售商表中有id
列,但为了从产品中引用零售商,您的产品表需要retailer_id
列。