无法让关联在表单中工作

时间:2012-03-08 22:08:21

标签: ruby-on-rails rails-activerecord

我很难找到与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

1 个答案:

答案 0 :(得分:0)

由于您的模型和表单中分别有belongs_to :Retailer<% f.association :retailer %>,因此您需要在product表中添加retailer_id列。

您在迁移文件中缺少t.references :retailer来创建产品表。 这就是为什么,我引用你的话说“它没有关联就能正常工作,但错误就是undefined method 'retailer_id' for #<Product:0x007ffbe0f7d530>

是的,零售商表中有id列,但为了从产品中引用零售商,您的产品表需要retailer_id列。