我正在使用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] %>