Forum: Ruby on Rails Using a select list for a boolean field

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
8ee257799a0f1898dd1951bd2843bc71?d=identicon&s=25 Eric Marthinsen (emarthinsen)
on 2009-01-02 08:00
(Received via mailing list)
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
Fde34ab22ac6ae44693f36b9f7fed41d?d=identicon&s=25 Brijesh Shah (brijesh)
on 2009-01-02 08:13
Eric Marthinsen 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 Shah
8ee257799a0f1898dd1951bd2843bc71?d=identicon&s=25 Eric Marthinsen (emarthinsen)
on 2009-01-02 08:42
(Received via mailing list)
Thanks for the reply, but that doesn't work either. It recognizes the
blank string as false.


On Jan 2, 2:13 am, Brijesh Shah <rails-mailing-l...@andreas-s.net>
Db7238007950074e9e73b76a81910406?d=identicon&s=25 tonypm (Guest)
on 2009-01-04 17:42
(Received via mailing list)
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
This topic is locked and can not be replied to.