3

以下のフォームを送信すると、params[:teachers] を使用してコントローラーでパラメーターを使用できますが、ビュー (同じビューがレンダリングされます) では、「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") %>

ビューで debug メソッドを使用してデバッグする場合、« 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 に答える