Boolean select problem

I want to use select form elements to choose between boolean options.
How
can I have it default to true and still display the persisted value
(either
true or false) when editing an existing object? I guess booleans
default to
false by default so its not obvious how to recognize when it’s a real
‘false’ that the user set or default false because the value was null.

thanks

On Fri, 2006-03-10 at 11:43 -0500, Larry W. wrote:

I want to use select form elements to choose between boolean options.
How can I have it default to true and still display the persisted
value (either true or false) when editing an existing object? I guess
booleans default to false by default so its not obvious how to
recognize when it’s a real ‘false’ that the user set or default false
because the value was null.


controller
def new
Animal.new
:my_boolean_field = true
end

model
YES_NO = [
[ “Yes”, true ],
[ “No”, false ]
].freeze

view
<%= options = [[‘prompt?’, ‘’]] + Animal::YES_NO
select(“amimal”, “my_boolean_field”, options) %>

Craig

Maybe I’m being too literal but I’m getting an uninitialized constant
error
for Animal::YES_NO. My guess is that i’m missing something obvioius in
the
constant declaration. It’s at the top of the model, does it need an
explicit public declaration?

it can’t see the constant. do i have to declare in the view that i’m
using
Animal?

I was just guessing that you have a class named Animal - you would have
to adjust for whatever class it is that you are using…

i.e. models/animal.rb
class Animal < ActiveRecord::Base
def YES_NO

end

I think I referenced the ‘Animal’ class elsewhere, you would have to
adjust those too.

Craig

I’m trying to suggest that you put it into whatever class you are using
and substitute that class name for Animal wherever I referenced the
Animal class. I thought by using ‘Animal’ class it would make it more
meaningful to you.

In my case, I am in placements_controller (and using Placement Class)

thus in my Placement class (models/placement.rb)
YES_NO = [
[ “Yes”, true ],
[ “No”, false ]
].freeze

and in my view…

<%= options = [[‘Accepted?’, ‘’]] + Placement::YES_NO
select(“placement”, “accepted”, options) %>

(where ‘accepted’ is the boolean)

and in my placements_controller.rb, I might have code like…

def new
@placement = Placement.new
@placement.accepted = true
end

the controller code assigns a ‘default’ value of true to the ‘new’
Placement

Craig

I did that, but it doesn’t work. I have no idea why.

I embedded the array in the view directly –
<%= options = [[“Yes”, true]… and that works. It’s not as clean but it
will do for now.

Thank you very much for your help.