2

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

1 回答 1

2

您可以通过引用表单对象来获取存储的值:f.object.primer_tm_formula 并将其设置如下: selected: f.object.primer_tm_formula

于 2013-07-06T15:56:11.227 回答