15

在 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但是当盒子有很多选项字段时,这是不合适的......

4

2 回答 2

19

像这样的东西会起作用(使用旧的“hashrocket语法”和 operator =>

%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"
于 2012-10-02T13:46:18.200 回答
18

你应该释放 rails helpers 的力量。

对于select标签

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

此外,在可能的情况下,而不是原始%form使用form_tag或更好form_for(或更好的 simple_form 或 formtastic)

于 2012-10-02T16:04:01.143 回答