Подтвердить что ты не робот

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 будет много полей параметров...

4b9b3361

Ответ 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)