I am trying to display a badge pill that says 'Yes' or 'No' based on it's boolean value, using a content_tag rails helper.
I currently have my helper method written out as
def boolean_for(bool = false)
style = [true, 'true', 1, '1'].include?(bool) ? ['success', t('Yes')] : ['danger', t('No')]
content_tag(:span, 'Selectable', class: "badge badge-pill badge-%s"% style).html_safe
end
which displays this
My goal is to change the "Selectable" to yes or no, but so far every attempt I have made has been unsuccessful. I'd assume I have to change the second argument, but am unsure to what. I attempted this which did display yes or no, but would cause me to lose the badge pill styling.
def boolean_for(bool = false)
rv=false
rv=true if bool
return rv ? t('Yes') : t('No')
style = [true, 'true', 1, '1'].include?(bool) ? ['success', t('Yes')] : ['danger', t('No')]
content_tag(:span, rv, class: "badge badge-pill badge-%s"% style).html_safe
end
Any help with this would be super appreciated!
CodePudding user response:
This (or something like it) will do the trick:
def boolean_for(bool = false)
style = ['danger', t('No')]
pill_text = 'No'
if [true, 'true', 1, '1'].include?(bool)
style = ['success', t('Yes')]
pill_text = 'Yes'
end
content_tag(:span, pill_text, class: "badge badge-pill badge-%s"% style).html_safe
end
Or if you want to use your locale file like you are for the styles:
def boolean_for(bool = false)
style = ['danger', t('No')]
pill_text = t('No')
if [true, 'true', 1, '1'].include?(bool)
style = ['success', t('Yes')]
pill_text = t('Yes')
end
content_tag(:span, pill_text, class: "badge badge-pill badge-%s"% style).html_safe
end