私はsimple_formを使用しており、モデルに値の配列が格納されています。インデックスをテーブルに保存し、値を選択ドロップダウンに表示したい。
これまでのところ、私はこれを持っています:
モデル
PRIMER_TM_FORMULA_OPTIONS = ["Breslauer et al. 1986", "SantaLucia 1998"]
形
<%= f.input :primer_tm_formula, :collection => 0..Primer3Batch::PRIMER_TM_FORMULA_OPTIONS.length, :label_method => lambda { |i| Primer3Batch::PRIMER_TM_FORMULA_OPTIONS[i] }, label: 'Thermo Parms', input_html: {class: 'input-large'}, selected: :primer_tm_formula %>
ほとんどは機能していますが、更新後、フォームが更新されると、正しい値がデータベースに保存されていても、ページは常に配列の 0 インデックスに値を表示します。
また、このコードは非常に複雑なようです。答えの一部として、同じ目標を達成するためのより簡潔な方法があれば教えてください。
最終コード
受け入れられた回答に基づいて、ビューの最終的なコードはこれです。同じことをしようとしている他の人向けです。
<%= f.input :primer_tm_formula,
collection: 0..Primer3Batch::PRIMER_TM_FORMULA_OPTIONS.length,
label_method: lambda { |i| Primer3Batch::PRIMER_TM_FORMULA_OPTIONS[i] },
label: 'Thermo Parms',
input_html: {class: 'input-large'},
selected: Primer3Batch::PRIMER_TM_FORMULA_OPTIONS[f.object.primer_tm_formula] %>