2015-05-08 30 views
0

我有一个Rails 3.2.21应用程序,我在窗体中添加一个简单的form/collection_select字段。当从下拉列表中选择一个对象(或保留为空)我得到以下错误:ActiveRecord AssociationType不匹配

ActiveRecord::AssociationTypeMismatch at /calls/5 
BillFacility(#70179530126460) expected, got String(#70179505820040) 

这里是我的模型是这样的:

call.rb

belongs_to :bill_facility 
attr_accessible :bill_facility_id 

bill_facility.rb

has_many :calls 

这里是我的表是这样的:

_form.html.erb

<%= f.collection_select(:bill_facility_id, BillFacility.order("facility_name ASC"), :id, :facility_name, {:include_blank => true}, {:class => 'select'}) %> 

这里的迁移我做的bill_facility_id添加BillFacility模型,并添加到Call型号:

class CreateBillFacilities < ActiveRecord::Migration 
    def change 
    create_table :bill_facilities do |t| 
     t.string :facility_name 
     t.string :facility_address 

     t.timestamps 
    end 
    end 
end 

class AddBillFaciltyIdToCalls < ActiveRecord::Migration 
    def change 
    add_column :calls, :bill_facility_id, :integer 
    end 
end 

如果我手动分配电话号码bill_facility_id我收到一个未知的to_i方法错误。如果我手动使其零,然后选择从下拉一个BillFacilty(或留空)我得到的不匹配错误:

ActiveRecord::AssociationTypeMismatch at /calls/5 
BillFacility(#70179530126460) expected, got String(#70179505820040) 

我敢肯定,这是一些简单的我失踪。任何人有什么想法我在这里做错了吗?这有点早,所以我的头脑有些模糊,所以我应该等到我完全清醒,但我想我会寻求一些帮助。

如果您有任何问题,请让我知道。

+0

请添加完整的回溯以及控制器代码。 – messanjah

回答

0

我想我已经想通了。绝对没有足够的清醒来写代码。

我在形式BillFacility collection_select

<%= f.label :Bill_Facility, "Bill Facility", class: "control-label" %><%= f.check_box :bill_facility, :id => 'bill_facility_checkbox' %> 

所以我打电话了一个名为bill_facility场,这是在我的数据库有过这一点,但由于bill_facility是相关的模型,它给我的失配误差。所以我简单地改变了迁移,将check_box更改为bill_fac,它工作。