Using a select list for a boolean field

Hello-

I’m trying to use a select list for a boolean field in my model. I
want there to be three values in the list: nil, true, and false. Here
are the snippets of code I have so far:

<%= f.select :yes_to_terms, [[‘Yes’, true], [‘No’,
false]], :include_blank => '–select one-- %>

The problem I’m running into is that if someone selects ‘–select
one–’ in the drop-down and submits the form, my app interprets the ‘–
select one–’ as false (it’s values is an empty string in the html).

I tried changing the list of options to this:

[[’–select one–’, nil], [‘Yes’, true], [‘No’, false]]

But that didn’t work either. Does anyone have any ideas? Also, I can’t
use a checkbox for this app, since I need to know whether the value is
true, false, or unknown.

Regards,
Eric

Eric M. wrote:

Hello-

I’m trying to use a select list for a boolean field in my model. I
want there to be three values in the list: nil, true, and false. Here
are the snippets of code I have so far:

<%= f.select :yes_to_terms, [[‘Yes’, true], [‘No’,
false]], :include_blank => '–select one-- %>

The problem I’m running into is that if someone selects ‘–select
one–’ in the drop-down and submits the form, my app interprets the ‘–
select one–’ as false (it’s values is an empty string in the html).

I tried changing the list of options to this:

[[’–select one–’, nil], [‘Yes’, true], [‘No’, false]]

But that didn’t work either. Does anyone have any ideas? Also, I can’t
use a checkbox for this app, since I need to know whether the value is
true, false, or unknown.

Regards,
Eric

Hi
Try this one
[[’–select one–’, ‘’], [‘Yes’, true], [‘No’, false]]
might be you will get value nil when user select ‘select one’
Thanks
Brijesh S.

Thanks for the reply, but that doesn’t work either. It recognizes the
blank string as false.

On Jan 2, 2:13 am, Brijesh S. [email protected]

if you want three values, then boolean true false cant work. I have
done this using 0 and 1 as below:

= select_tag :drop_ship, options_for_select([[’’,’’],[‘Drop Ship’,‘1’],
[‘Not Drop Ship’,‘0’]], params[:drop_ship])

You dont say how you want to use the tri-value in your code, but I use
this directly into a named_scope

has_finder :delisted, lambda {|*args|
args.first.blank? ? {:conditions=>nil} : {:conditions=>
['obsolete = ? ', args.first]}

which works fine because i am using mysql with boolean of 0=false,
1=true.

If you are checking the params value in the controller then you will
be looking to detect, blank?, ‘0’ or ‘1’

Tonypm