Home > Mobile >  Display yes/no with content_tag helper by boolean
Display yes/no with content_tag helper by boolean

Time:05-27

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

select tags

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 
  • Related