2013-07-06 1 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 %> 

그것은 주로 일하고 있지만 갱신 한 후, 양식 새로 고칠 때, 올바른 값이 저장되어 있더라도 항상 페이지는 배열의 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 (값이 아님) – ardochhigh

+0

예, 필자는 타이핑에 대해 유감스럽게 생각합니다. primer_tm_formula –

+0

아니요, 데이터베이스에 무엇이 있는지에 관계없이 0 인덱스 값을 표시하는 것과 같은 일을하는 것이 두렵습니다. – ardochhigh

관련 문제