2012-10-02 64 views
12

什麼是最快最優雅的方式來標記HAML中當前選定的選項值?Rails窗體(選擇/選項) - 如何用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" 

或者,在較新的Ruby版本(1.9和更高版本):

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

什麼選擇:PARAMS [:X]嗎? – jpganz18

+0

默認選定值。選擇的值可以是true或false(==的計算結果) – 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語法對於它的縮進來說非常惱人 –