2010-11-22 24 views
1

私は現在、コントローラに2つのパラメータを渡すフォームを持っています。私の質問は、select_tagフォームで選択するたびに、submitタグにヒットした後に私の選択肢を残しておきたいのです。このようにして、ユーザーは自分が何を選択したかを知ることができます。私は使用することができました:selected => "true"しかし、デフォルト値のみであり、送信された値ではありません。Rubyはselect_tagで選択した選択肢を保存します

<form name="filter" action="" style="display:inline" > 
    <label for="filter">Filter by Name or Description: </label> 
    <%= text_field_tag "query", params['query'] %> 
    <label for="status">Filter by Status:</label> 
    <%= select_tag(:sortstatus, 
        '<option value="empty">Show All</option>, 
        <option value="0">Applying</option>, 
        <option value="3">Suspended</option>, 
        <option value="4">Pending</option>') %> 
    <%= submit_tag 'Search' %> 
</form> 

そして、ここで私のテーブルで

def sort_status 
    if params[:sortstatus] == "empty" 
      @statusorder = "" 
    else @statusorder = params[:sortstatus] 
    end 
    end 

を動作するように、空の値を変更しますコントローラでは、Googleで、これまで任意の解決策を見つけることができていないです。

答えて

2

options_for_selectをご覧になり、optionsタグを生成してください。選択したいエントリを指定することができます。例えば

<%= select_tag(:sortstatus, options_for_select([['Show All', 'empty'], 
    ['Applying', '0'], 
    ['Suspended', '3'], 
    ['Pending', '4']], params[:sortstatus]) %> 

これは、私はあなたが示唆したものを試してみましたが、何が起こったことはRubyは値ではなく値に与えられた名前を救うたparams[:sortstatus]

+0

の現在の値に選択した項目を設定します。確かに非常に奇妙です。私はコントローラがその後私の価値を変えるようにしました。 <%> select_tag( 'sortstatus'、options_for_select([すべて表示]、[準備完了]、[適用中]、[保留中]、[保留中]]、params [:sortstatus])) – TheRealVayne

関連する問題