通过布尔值显示 yes/no 和 content_tag 助手

Display yes/no with content_tag helper by boolean

我正在尝试使用 content_tag rails 帮助程序显示一个徽章药丸,上面写着 'Yes' 或 'No' 基于它的布尔值。

我目前的辅助方法写成

      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 

显示这个

我的目标是将“可选”更改为是或否,但到目前为止我所做的每一次尝试都没有成功。我假设我必须更改第二个参数,但不确定要更改什么。 我尝试过这个确实显示是或否,但会导致我失去徽章药丸样式。

  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

如有任何帮助,我们将不胜感激!

这个(或类似的东西)可以解决问题:

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 

或者,如果您想像使用样式一样使用语言环境文件:

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