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

このようなものが機能します(演算子で古い「ハッシュロケット構文」を使用=>

%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

レールヘルパーの力を解き放つ必要があります。

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 に答える