I know I could easily write a function and put it in the application controller, but I'd rather not if there is something else that does this already. Basically I want to have something like:
>> boolean_variable?
=> true
>> boolean_variable?.yesno
=> yes
>> boolean_variable?.yesno.capitalize
=> Yes
is there something like this already in the Rails framework?
No such built-in helper exists, but it's trivially easy to implement:
There isn't something in Rails.
A better way than adding to the true/false classes to achieve something similar would be to make a method in ApplicationHelper:
Then, in your view
Adding methods to built-in classes is generally frowned upon. Plus, this approach fits in closely to Rails' helpers like
raw()
.Also, one offs aren't a great idea as they aren't easily maintained (or tested).
There is a gem for that now: humanize_boolean
Then you just do:
It also supports internationalization so you can easily change the returned string by including your translation for en.boolean.yes and en.boolean.no (or any locale you like)
Alternatively, you could also do one offs in your views such as:
The
humanize_boolean
gem extends theTrueClass
,FalseClass
andNilClass
which is an indirect extension I would prefer to avoid.I've found this helper with a top level translation is isolated, friendly to change and you can give it anything truthy or falsey:
Doing
!!(boolean).to_s
ensures the variables passed to the argument is either a"true"
or"false"
value when building the translation string.In use: