【问题标题】:Rails select list reverts to top?Rails 选择列表恢复到顶部?
【发布时间】: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 不是空白吗?
  • 肯定,但我应该对新视图和编辑视图使用相同的代码(上面的代码)吗?还是只是编辑?
  • 要在newedit 中使用,您可能需要rescue:selected =&gt; (@kase.appointedsurveyor_id rescue "")
  • 对不起,你能把上面的内容放到上下文中吗?我真的很困惑。
  • 公司 (@kase.appointedsurveyor_id rescue "") %>
  • 对吗?

标签: ruby-on-rails list select


【解决方案1】:

你可以通过第三个参数来确定,试试下面的代码:

<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 标记处使用的实例变量。

希望对您有所帮助。

【讨论】:

  • 您好,我尝试了您的建议,但似乎没有用。我已经粘贴了我在我的问题中尝试过的代码,以防我犯了错误。
【解决方案2】:

原来我在数据库中的字段是字符串而不是整数。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签