我的rails应用程序中有多个选择列表,如下所示:
<li>Company<span><%= f.select :company_id, Company.all.collect {|m| [m.companyname, m.id]} %></span></li>
它们都运行良好,除非 - 有时如果您转到编辑视图,选择列表将恢复到顶部项目,而不是创建时选择的项目。因此,如果您转到编辑视图然后单击更新而不实际进行任何更改,则列表默认为顶部项目 - 即使您没有触摸它们。
有解决方法吗?
谢谢,
丹尼
编辑:
<% form_for (@kase), :html => { :multipart => true } do |f| %>
<li>Appointed Surveyor<span><%= f.select :appointedsurveyor_id, Company.all.collect {|m| [m.companyname, m.id]}, {:selected => @kase.appointedsurveyor_id} %></span></li>
<li>Surveyor Name<span><%= f.select :surveyorperson_id, Person.all.collect { |x| [x.personname, x.id]}, {:selected => @kase.surveyorperson_id} %></span></li>
我已尝试过上述内容,但遗憾的是它似乎仍然恢复为默认值。
我坚持这个,我根本找不到任何教程等。
编辑2:
<li>Appointed Surveyor<span><%= f.select :appointedsurveyor_id, Company.all.collect {|m| [m.companyname, m.id]}, {:selected => (@kase.appointedsurveyor_id rescue "")} %></span></li>
<li>Surveyor Name<span><%= f.select :surveyorperson_id, Person.all.collect { |x| [x.personname, x.id]}, {:selected => (@kase.surveyorperson_id rescue "")} %></span></li>
答案 0 :(得分:2)
您可以使用第三个参数确认它,请尝试以下代码:
<li>Company<span><%= f.select :company_id, Company.all.collect {|m| [m.companyname, m.id]}, {:selected => @your_instance_name.company_id} %></span></li>
确保将@your_instance_name
替换为您在form_for标记处使用的实例变量。
希望这有帮助。
答案 1 :(得分:0)
事实证明,我将数据库中的字段视为字符串而不是整数。