3

提交以下表单时,控制器中的参数可用 params[:teacher],但在视图中(呈现相同的视图),“language_id”的选定值不是 params[: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] » 参数。

谢谢

4

2 回答 2

3

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

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

这可能会奏效。

有关更多选项,您可以通过此链接

于 2013-11-11T17:56:02.710 回答
1

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

查看文档- 我猜你会想要将它包装在一个options_for_select调用中,并可能更改从t('languages_hash').

于 2013-11-11T15:05:16.083 回答