2011-05-17 54 views
0

我正在使用Rails 3,并遇到问题。我的collection_select未填充数据库中的字段。这就是我的看法是这样的:(除去一些HTML)RoR:collection_select未设置数据库中的值

f.label "Company Name" 
@c = Company.all 
collection_select(:Company , :company_id, @c, :id , :companyName, {:prompt => true}) 
f.submit 

下拉列表中有正确的价值观,但是当我提出它,这是我的params样子:"Company"=>{"company_id"=>"2"}。我没有一个名为company的字段,但我确实有一个名为company_id的字段和一个名为company的表。我的语法正确吗?

Processing by RecordsController#create as HTML 

Parameters: {"utf8"=>"✓", "authenticity_token"=>"WLzwCoZFCUhyH9ZqYWYLmaQwyleB3JLoTnb4lhftKzc=", "record"=>{"title"=>"test", "Company"=>{"company_id"=>"2"}, "commit"=>"Create record"} 

AREL (2.0ms) INSERT INTO "records" ("company_id", "title", "created_at", "updated_at") VALUES (NULL, 'test','2011-05-17 05:01:38.905717', '2011-05-17 05:01:38.905717') 
Redirected to http://localhost:3000/Records/7 
Completed 302 Found in 150ms 
+0

不知道这会有所帮助,但我想清楚了一点件事了。在Rails中,您将拥有一个顶级参数,它保存相关模型对象的参数。因此,指向实际参数的“公司”是要发送到update_attributes的东西,或者是新的或您调用的任何影响数据库中模型的东西。 – jaydel 2011-05-17 17:57:29

回答

1

试试这个

# in controller 
@companies = Company.all 

collection_select @record, :company_id, @companies, :id, :companyName 

form_for @record do |f| 
    = f.collection_select :company_id, @companies, :id, :companyName 
+0

这解决了我的问题。谢谢 – Jason 2011-05-22 00:59:43