【问题标题】:Rails view helper display badge and textRails 视图助手显示徽章和文本
【发布时间】:2016-01-18 16:39:24
【问题描述】:

我有一个正在使用 Rails 3.2.x 和 Bootstrap 2 开发的应用程序。我有一个视图助手,它根据调用的状态和属性返回不同的文本。

def status(call)
   if call.call_status == "open" && call.transfer_date > Time.zone.now + 15.minutes
     "Scheduled"
   elsif call.wait_return == "yes" && call.call_status == "open"
     "Active/Wait and Return"
   elsif call.call_status == "close"
     "Closed Call"
   elsif call.call_status == "cancel"
     "Cancelled Call"
   else
     "Active"
   end
 end

我想将其重构为每个条件的文本返回一个引导标记,其中包含文本。我查看了content_tag 的 API 文档,我认为这是我需要的,但我不能 100% 确定如何完成这项工作。

任何帮助或重构建议将不胜感激。

【问题讨论】:

    标签: ruby-on-rails twitter-bootstrap ruby-on-rails-3 helper


    【解决方案1】:

    我会先将大方法拆分成小方法,如下所示:

    class Call
      def scheduled?
        call_status == "open" && call.transfer_date > Time.zone.now + 15.minutes
      end
    
      def closed?
        call_status == "close"
      end
    
      ...
    end
    

    那么您的status 方法将如下所示:

    def status(call)
      text = case
        when call.scheduled?
          "Scheduled"
        when call.cancelled?
          "Active/Wait and Return"
        when call.closed?
          "Closed Call"
      end
      content_tag(:span, text, class: "badge")
    end 
    

    希望它能帮助您重构代码。

    【讨论】:

    • 感谢您的建议。我知道我忽略了一些东西。这是一个很好的开始。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 2011-07-16
    • 1970-01-01
    • 2014-07-29
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多