Hi, I have a silly question. I have a form that is filled out that has a number of boolean values in it, represented by checkboxes. After the request is posted, I am generating an e-mail to send to the person handling the request. In my mailer view (send_request.text.plain.rhtml), I do something like Important thing one..: <%= @req.important_thing_1 %> Important thing two..: <%= @req.important_thing_2 %> Important thing three: <%= @req.important_thing_3 %> Which is rendered as Important thing one..: false Important thing two..: true Important thing three: false I would like false to display as 'No' and true to display as 'Yes'. Is there a knob or switch somewhere in rails to configure how boolean values are converted into strings? Thank you. Regards, Rich
on 2007-04-02 21:04
on 2007-04-02 21:30
> > Which is rendered as > > Important thing one..: false > Important thing two..: true > Important thing three: false > > I would like false to display as 'No' and true to display as 'Yes'. Is > there a knob or switch somewhere in rails to configure how boolean > values are converted into strings? I don't know if there is, but you could do something like this (and get it loaded via environment.rb): class TrueClass def to_yesno 'Yes' end end class FalseClass def to_yesno 'No' end end And then in your views do: Important thing one..: <%= @req.important_thing_1.to_yesno %> Important thing two..: <%= @req.important_thing_2.to_yesno %> Important thing three: <%= @req.important_thing_3.to_yesno %>
on 2007-04-02 21:33
Duzenbury, Rich wrote: > Hi, > > I have a silly question. I have a form that is filled out that has a > number of boolean values in it, represented by checkboxes. After the > request is posted, I am generating an e-mail to send to the person > handling the request. > > In my mailer view (send_request.text.plain.rhtml), I do something like > > Important thing one..: <%= @req.important_thing_1 %> > Important thing two..: <%= @req.important_thing_2 %> > Important thing three: <%= @req.important_thing_3 %> > > Which is rendered as > > Important thing one..: false > Important thing two..: true > Important thing three: false > > I would like false to display as 'No' and true to display as 'Yes'. Is > there a knob or switch somewhere in rails to configure how boolean > values are converted into strings? > > Thank you. > > Regards, > > Rich I understand you want to change boolean to yes or no depend on true or false :) If you want to use it in the view, you can put the code in the helper so you can access to it across all your template files :) def to_yesorno(boolean) if boolean == 'yes' return 'yes' else return 'no' end end then you call on it puts to_yesorno('true') #should return yes :D
on 2007-04-03 04:17
try the ternary operator: bool ? 'Yes' : 'No' that will produce 'Yes' for true and 'No' for false; if you want an empty string for nil, try: (bool ? 'Yes' : 'No') unless bool.nil? that will return nil if bool is nil, which will turn into an empty string in an erb template (since nil.to_s is ''). Of course, you could wrap that in a helper if you really want to, or add custom methods to TrueClass, FalseClass and NilClass... but personally, I find it clean/dry enough just to use the operator. Cheers, Ken
on 2007-04-03 15:54
> empty string in an erb template (since nil.to_s is ''). > > Of course, you could wrap that in a helper if you really want > to, or add custom methods to TrueClass, FalseClass and > NilClass... but personally, I find it clean/dry enough just > to use the operator. > Hello, Thanks, that works fine. I normally avoid the ternary operator, but in this case, it's a very straight forward replacement so I've chosen this route. Thanks to everyone who took the time to reply. Regards, Rich
on 2007-04-03 19:01
Just because I was curious:
class TrueClass
def to_s
"Yes"
end
end
class FalseClass
def to_s
"No"
end
end
true.to_s => "Yes"
false.to_s => "No"
But this would mean *anywhere* you print out a boolean value it would
render "Yes" or "No".
-Shawn
on 2013-02-15 22:29
Found via google. I made a quick script for this. Sorry for reviving..
class TrueClass
def to_s(style = :boolean)
case style
when :word then 'yes'
when :Word then 'Yes'
when :number then '1'
else 'true'
end
end
end
class FalseClass
def to_s(style = :boolean)
case style
when :word then 'no'
when :Word then 'No'
when :number then '0'
else 'false'
end
end
end
https://gist.github.com/pehrlich/4963672
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.