select_tag help

I'm trying to create a select tag for a search form that defaults to -->Fake when nothing has been selected. I have tried using the following:

<%= select_tag(:fake, options_for_select({"-->Fake" => "", "Yes" => 1, "No" => 0}, params[:fake].to_i)) %>

for some reason though, No is selected initially when no GET parameter is passed and the options are not in the correct order. they show up like the following:

No -->Fake Yes

Can you someone help me out with this? thanks!

I'm trying to create a select tag for a search form that defaults to -->Fake when nothing has been selected. I have tried using the following:

<%= select_tag(:fake, options_for_select({"-->Fake" => "", "Yes" => 1, "No" => 0}, params[:fake].to_i)) %>

for some reason though, No is selected initially when no GET parameter is passed and the options are not in the correct order. they show up like the following:

Hashes are not ordered in ruby 1.8 - if you want an ordering use an array (eg [['Yes', 1], ['No',0]]). For an option to be preselected it's value (the second bit) must be equal to the last argument to select_tag (equal in the sense of ==, so in particular '1' != 1)

In your case you are passing params[:fake].to_i. If there are no parameters then params[:fake] is nil, and nil.to_i == 0 so rails selects the option with value 0.

Fred