私の質問モデルは、生徒が答えることができる質問のプロンプトと回答の選択肢を保持しています。これには、choice_0、:choice_1、:choice_2、:choice_3、:choice_4、および:choice_5という名前の列が含まれます。param値を動的に取得する
私のコントローラの一のセクションで、私は次のコードを使用した:
params[:choice_#{n}]
:私のアプリの他の領域で
correct_array.push(these_params[:choice_0]) if !these_params[:choice_0].blank?
correct_array.push(these_params[:choice_1]) if !these_params[:choice_1].blank?
correct_array.push(these_params[:choice_2]) if !these_params[:choice_2].blank?
correct_array.push(these_params[:choice_3]) if !these_params[:choice_3].blank?
correct_array.push(these_params[:choice_4]) if !these_params[:choice_4].blank?
correct_array.push(these_params[:choice_5]) if !these_params[:choice_5].blank?
を、Iは、例えば、#{}構文を使用しました
しかし、それは何らかの理由でparamsハッシュでは機能しません。私はこれらの5つのラインを達成するためのより乾燥した方法があると確信しています。
ありがとうございました。
correct_array = (0..5).map { |i| these_params["choice_#{i}".to_sym] }.select(&:present?)
またはメソッドとして:
あなたは 'paramsはを使用することができます[ "選択_#{n}が"。to_sym]' – fangxing
アハ!それはシンボルに変換する必要があります! –
またはそれをシンボルとして作成することができます: 'params [:" choice _#{n} "]' –