2012-10-02 40 views
12

एचएएमएल में वर्तमान में चयनित विकल्प मूल्य को चिह्नित करने का सबसे तेज़ और सबसे शानदार तरीका क्या है?रेल फॉर्म (चयन/विकल्प) - HAML के साथ चयनित विकल्प को कैसे चिह्नित करें?

%form{:action => '', :method => 'get'} 
    %select{:name => 'param_name'} 
     %option{:value => 'A'} A data 
     %option{:value => 'B'} B data 

एक ही रास्ता:

- if params[:param_name] == "A" 
    %option{:value => 'A', :selected => 'selected'} A data 
- else 
    %option{:value => 'A'} A data 

लेकिन यह अनुचित है जब select बॉक्स इच्छा कई विकल्प क्षेत्रों है ...

उत्तर

16

कुछ इस तरह (पुराने "hashrocket वाक्य रचना" का उपयोग कर काम करेंगे ऑपरेटर =>)

%select 
    %option{:value => "a", :selected => params[:x] == "a"}= "a" 
    %option{:value => "b", :selected => params[:x] == "b"}= "b" 

या, नए रूबी में संस्करण (1.9 और अधिक):

%select 
    %option{value: "a", selected: params[:x] == "a"}= "a" 
    %option{value: "b", selected: params[:x] == "b"}= "b" 
+1

क्या चुना है: पैरामीटर [: x] क्या ज़रूरत है? – jpganz18

+0

डिफ़ॉल्ट चयनित मूल्य। चयनित के लिए मूल्य सही या गलत हो सकता है (जो == मूल्यांकन करता है) – msanjay

13

आपको रेल सहायकों की शक्ति को मुक्त करना चाहिए।

For select tag:

= select_tag :param_name, options_for_select([['A data', 'A'], ['B data', 'B']], params[:param_name]) 

इसके अलावा, के बजाय कच्चे %form उपयोग form_tag या बेहतर form_for जब यह संभव (या अधिक बेहतर simple_form या formtastic) है

+0

यदि आप फॉर्म हेल्पर्स का उपयोग करने में सक्षम हैं, तो यह उत्तर निश्चित रूप से कच्चे फॉर्म मार्कअप को लिखने के लिए बेहतर है। –

+1

प्यार से प्यार अच्छा होगा अगर इसे 'form_tag' या' form_for' में लपेटने का एक उदाहरण था, HAML वाक्यविन्यास इसके इंडेंटेशन के साथ बहुत परेशान है –