simple_form在collection_select上显示当前值

时间:2013-07-06 15:50:55

标签: ruby-on-rails ruby simple-form

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

1 个答案:

答案 0 :(得分:2)

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