Rails form (select/option) - как отметить выбранную опцию с помощью HAML?
Какой самый быстрый и элегантный способ отметить выбранное в данный момент значение параметра в форме 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
будет много полей параметров...
Ответы
Ответ 1
Что-то вроде этого будет работать (используя более старый синтаксис 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"
Ответ 2
Вы должны развязать мощь помощников рельсов.
Для select
тега:
= select_tag :param_name, options_for_select([['A data', 'A'], ['B data', 'B']], params[:param_name])
Кроме того, вместо raw %form
используйте form_tag
или лучше form_for
, когда это возможно (или более простой simple_form или formtastic)