【发布时间】:2010-05-18 11:17:12
【问题描述】:
我的 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>
【问题讨论】:
-
请发表:1. 生成表单的代码 ('form_for..') 和 2. 实例化公司的代码(在控制器中)
-
您确定
@kase.appointedsurveyor_id和@kase.surveyorperson_id不是空白吗? -
肯定,但我应该对新视图和编辑视图使用相同的代码(上面的代码)吗?还是只是编辑?
-
要在
new和edit中使用,您可能需要rescue::selected => (@kase.appointedsurveyor_id rescue "") -
对不起,你能把上面的内容放到上下文中吗?我真的很困惑。
- 公司 (@kase.appointedsurveyor_id rescue "") %>
对吗?
标签: ruby-on-rails list select