我有一个Rails 3.2.21应用程序,我在表单中添加了一个简单的表单/ collection_select字段。从下拉列表中选择对象(或将其留空)时,我收到以下错误:
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'}) %>
以下是我添加BillFacility
模型并将bill_facility_id
添加到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
中手动为呼叫分配了ID,则会收到未知的to_i
方法错误。如果我手动将其设为零,则从下拉列表中选择BillFacilty
(或将其留空)我会收到不匹配错误:
ActiveRecord::AssociationTypeMismatch at /calls/5
BillFacility(#70179530126460) expected, got String(#70179505820040)
我确信这很简单,我不知道。任何人对我在这里做错了什么都有任何想法?这有点早,所以我的思绪有点模糊,所以我应该等到我完全清醒,但想到我会寻求帮助。
如果您有任何疑问,请告诉我。
答案 0 :(得分: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
并且它有效。