Rails form (select/option) - how to mark selected option with HAML?

What's the quickest and most elegant way to mark currently selected option value in the form in HAML?

%form{:action => '', :method => 'get'} %select{:name => 'param_name'} %option{:value => 'A'} A data %option{:value => 'B'} B data 

One way:

- if params[:param_name] == "A" %option{:value => 'A', :selected => 'selected'} A data - else %option{:value => 'A'} A data 

but this is inappropriate when the select box will has many option fields...

2 Answers

Something like this will work (using the older "hashrocket syntax" with the operator =>)

%select %option{:value => "a", :selected => params[:x] == "a"}= "a" %option{:value => "b", :selected => params[:x] == "b"}= "b" 

Or, in newer Ruby versions (1.9 and greater):

%select %option{value: "a", selected: params[:x] == "a"}= "a" %option{value: "b", selected: params[:x] == "b"}= "b" 
2

You should unleash the power of rails helpers.

For select tag:

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

Also, instead of raw %form use form_tag or better form_for when it's possible (or more better simple_form or formtastic)

2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like