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
ボックスに多くのオプションフィールドがある場合、これは不適切です。
このようなものが機能します(演算子=>
で古い「ハッシュロケット構文」を使用)
%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"
Railsヘルパーの力を解き放つ必要があります。
= select_tag :param_name, options_for_select([['A data', 'A'], ['B data', 'B']], params[:param_name])
また、可能な場合は、生の%form
の代わりにform_tag
以上のform_for
を使用します(または、より適切なsimple_formまたはformtastic)