2013-07-06 66 views
2

我正在使用simple_form並在模型中存儲了一組值。我希望索引存儲在表中,並在選擇下拉列表中顯示值。simple_form在collection_select上顯示當前值

到目前爲止,我有這樣的:

模式

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 %> 

這主要是工作,但更新後,當窗體被刷新,即使正確的值是stor,頁面也始終顯示數組的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] %> 

回答

2

可以通過引用窗體對象獲取存儲的值:f.object.primer_tm_formula並設置它像這樣:選擇:f.object.primer_tm_formula

+0

謝謝您的回答,但我不能讓它工作。你的意思是選擇:f.object.primer_tm_formula(not value) – ardochhigh

+0

是的,抱歉我的意思primer_tm_formula –

+0

不,我擔心它做同樣的事情 - 顯示0索引值,無論數據庫中的內容。 – ardochhigh