2010-01-24 4 views
1

Sinatra 서버의 일부로 구현 된 루틴에 @theModels라는 문자열 배열이 있습니다. 이 모델은 사용자가 선택할 수있는 옵션이며 백엔드 (새 모델이 추가되면 프런트 엔드 코드가 변경되지 않아야 함)에 의해 획득됩니다.haml에서 배열 배열을 얻으려면 어떻게해야합니까?

나는 HTML을 렌더링하기 위해 haml을 사용하고 있습니다.

각 요소가 체크 상자가되도록 @theModels 목록의 각 요소를 열거 할 수 있습니까? 그리고 사용자가 선택한 체크 박스를 어떻게 얻을 수 있습니까?

난 그냥

= @theModels 

퍼팅하지 체크 박스에 확실히 나에게 @theModels에 포함 된 문자열의 목록을 제공하지만, 간격 등을하지 않고, 할 것이다 것을 알 수있다. 나는 비슷한 것으로 보이는 this question을 찾았지만, 내 haml-fu는 내가 필요로하는 것을 변환하기에 충분하지 않다.

UPDATE :이 파일 업로드와 관련된 옵션입니다

등 이제 코드는 보이는 것을 같은 :에서 대신, 각 옵션에 파일 업로드 버튼을두고

%form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"} 
- @theModelHash.each do |key,value| 
    %br 
    %input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value} 
    =key 
    %input{:type=>"file",:name=>"file"} 
    %input{:type=>"submit",:value=>"Upload"} 

문제는, 끝. 나는 끝에있는 하나의 제출 버튼 만 원한다. 'Upload (업로드)'버튼을 누르면 두 결과 모두를보고하는 두 가지 양식이 있어야합니까?

UPDATE2 :

감사 : 순간의 생각 후

은 위의가에 수정 될 수 있습니다!

%form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"} 
- @theModelHash.each do |key,value| 
    %br 
    %input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value} 
    =key 


%form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"} 
    %input{:type=>"file",:name=>"file"} 
    %input{:type=>"submit",:value=>"Upload"} 

그리고 그것은 내가 원하는 것을 수행하는 것으로 보입니다.

답변

3

대신 콘텐츠를 해시로 보내야한다고 생각합니다. 이렇게하면 양식에 초기 값을 설정할 수 있습니다.

해시 @params가 결과를 제공합니다.

예. { "oranges"=> "1"}

+0

우를 매우 가까이! 원래의 질문에서 문제가 될 것이라고 생각하지는 않지만 사용자가 동시에 업로드하는 파일에 대한 옵션입니다. 내 업데이트 된 질문을 참조하십시오, 나는이 계획의 나머지 부분에 충분한 공간이 없습니다. – mmr

+0

이 두 번째 사양은 원본에 매우 가깝다고 생각하지 않습니다. 원래 답을 입력 한 후에 문제를 완전히 변경하면 좌절감을 느낍니다. 시도해보십시오. oDesk.com –

+1

답변을 사용하여 제대로 작동 할 수 있었으므로 실제로는 매우 가까이에 있습니다. 도와 줘서 고마워, 미안해, 미안해. – mmr

0

제공된 링크는 올바른 html을 반환하는 레일 솔루션과 링크되어 있습니다.

이 기능을 직접 정의 할 수 있습니다

 
Input: key, value 

Output: %input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value} 

def check_box(key, value) 

     ... 

end 

and call it in haml with 

=check_box(key,value) 
관련 문제