Rails 4.0:form_for的选定值[select]

时间:2013-11-11 01:28:57

标签: ruby-on-rails form-for

当提交下面的表格时,参数在控制器中可用params [:teachers],但在视图中(渲染相同的视图),“language_id”的选定值不是参数[:teacher] [:language_id ],但是默认值(第一个选项)。

<%= form_for :teacher , :url => {:action =>"search_teacher"} , :html => { :method => "post"} do | f | %>
<%= f.select :language_id , t('languages_hash'), :include_blank => false  %>
<%= f.submit  :value => t("search_button") %>

在视图中使用调试方法进行调试时,会出现«params [:teacher] [:language_id]»参数。

谢谢

2 个答案:

答案 0 :(得分:3)

根据我的问题理解,您正试图在提交表单后让之前选择的语言保持选中状态。为此,您可能需要在f.select中传递选定的选项。

<%= f.select("Language", "language_id", Language.all.collect {|p| [ p.name, p.id ] }, { :include_blank => true, :selected => params[:language_id] }) %>

这可能会成功。

如需更多选项,您可以浏览此link

答案 1 :(得分:1)

我猜测t('languages_hash')没有以select标记所期望的正确格式返回数据。

签出the docs - 我猜你想在options_for_select调用中包含它,并可能更改从t('languages_hash')返回的内容的顺序。