当提交下面的表格时,参数在控制器中可用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]»参数。
谢谢
答案 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')
返回的内容的顺序。