在轨道上的ruby中页面刷新后丢失的f..select的选定值

时间:2014-03-13 09:43:38

标签: ruby-on-rails

我在铁轨上有一个红宝石下拉列表,如下:

<table>
<tr>
   <td align="center">
      <%= f.select(:Interest,options_from_collection_for_select(@students, "id", "student_mentor_subjects"), {},:id => "DDL_Students", :style => "width:160px;") %>
   </td>
</tr>
</table>

学生是一个填充f.select的表格,下面是学生表的架构:

id | student_mentor_subjects
1  | ijk
2  | mno
3  | pqr

当我从f.select上方选择一个值并单击搜索按钮然后刷新页面并且所选值丢失,如何在页面刷新后保留所选的f.select值。 请帮助我,谢谢。

1 个答案:

答案 0 :(得分:2)

来自api:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_from_collection_for_select

options_from_collection_for_select(collection, value_method, text_method, selected = nil)

options_from_collection_for_select的第四个参数是默认值。在你的情况下,你需要从params设置它,然后回退到一个特定的默认值,如果它没有任何内容(这是第一次加载页面时的情况)。

我不知道从params读取哪个值,因为你没有发布表单的其余部分,但如果查看日志,你应该看到你想要读取的值。所以,可能就像

      <%= f.select(:Interest,options_from_collection_for_select(@students, "id", "student_mentor_subjects", params[:search][:interest] || @students.first.id), {},:id => "DDL_Students", :style => "width:160px;") %>