2012-10-02 63 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语法对于它的缩进来说非常恼人 –