2012-10-02 8 views
12

Jaki jest najszybszy i najbardziej elegancki sposób zaznaczania aktualnie wybranej wartości opcji w formularzu w HAML?Formularz Railsów (wybierz/opcja) - jak oznaczyć wybraną opcję za pomocą HAML?

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

Jednym ze sposobów:

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

ale jest to niewłaściwe, gdy wola select pole ma wiele pól opcji ...

Odpowiedz

16

Coś jak to będzie działać (przy użyciu starszych „hashrocket składni” z operatorem =>)

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

Lub, w nowszym Ruby wersje (1.9 i większe):

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

co robi wybrani: params [: x] zrobić? – jpganz18

+0

domyślna wybrana wartość. wartością dla wybranej może być wartość true lub false (której wartość == oznacza) – msanjay

13

Powinieneś uwolnić moc pomocników szyn.

For select tag:

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

Również zamiast surowego %form użycie form_tag lub lepiej form_for gdy jest to możliwe (lub więcej lepiej simple_form lub formtastic)

+0

Ta odpowiedź jest z pewnością lepsza od pisania znaczników formularza w widokach, jeśli możesz skorzystać z pomocy formularza. –

+1

Uwielbiam odpowiedź byłoby ładniej gdyby miał przykład owijania go w 'form_tag' lub' form_for', składnia HAML jest dość denerwujące z wcięciem –

Powiązane problemy