2011-01-31 22 views
1

私はフォームの選択をどこで行うのですか?デフォルトでは、「メイン」ルートフォルダを選択する必要があります。私はそれらがnilでない限り選択されたものとしてparamsを使用する例を見ました。しかし、私はparamがnilの場合に別の値を使用する例は見ていません(空でなければこれを使用してください)。タグを選択 - ロジックを使用して選択した値を指定

VIEW

<%= f.select :folder_id, options_for_select(@folders, @folder_to_select) %> 

CONTROLLER:

if !params[:contact][:folder_id].nil? 
    @folder_to_select = params[:contact][:folder_id].to_i 
else 
    @folder_to_select = @folders.assoc('MAIN').last.to_i 
end 

は、私はすべての選択の内側にそのコントローラロジック機能を得ることができますか?

ありがとうございます!

編集:

私はそれを逃したが、私のoriginallコントローラコードが実際に動作しませんでした。 [:contact] [:folder_id]がnilであるかどうかを確認する前に、[:contact]パラメータがnilであるかどうかをチェックしなければなりませんでした(トップレベル[:contact]が存在しない場合はゼロエラーを避けるため)。

if !params[:contact].nil? 
    if !params[:contact][:folder_id].nil? 
    @folder_to_select = params[:card][:folder_id].to_i 
    else 
    @folder_to_select = @folders.assoc('MAIN').last.to_i 
    end 
end 

答えて

1

はい。

 
<%= f.select :folder_id, options_for_select(@folders, params[:contact][:folder_id].to_i || @folders.assoc('MAIN').last.to_i) %> 
+0

おかげ。paramが私もそれからはnilエラーを取得する(ページ初期荷重)が存在しない場合。 – Reno

+0

あなたは、あなたのオリジナルのポストにif文からはnilエラーを取得する必要がありますこれを回避するには、コンパクトなif文を使用することをお勧めします。(params.has_key?(:contact)?params [:contact] [:folder_id] .to_i:@folder.assoc( 'MAIN')。 to_i) –

+0

私は、可能であれば、コントローラー内のロジックであるか、モデルまたはモジュールに追加しています。これらのコードはすべてビューを混乱させ、理解しにくくします。 –

関連する問題