我正在使用 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] %>
答案 0 :(得分:2)
您可以通过引用表单对象获取存储的值:f.object.primer_tm_formula并将其设置如下:selected:f.object.primer_tm_formula