Rails查看助手显示徽章和文本

时间:2016-01-18 16:39:24

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

我有一个应用程序我正在使用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%确定如何使其工作。

非常感谢任何帮助或重构建议。

1 个答案:

答案 0 :(得分:2)

我首先将大型方法拆分为小型方法,如下所示:

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 

希望它可以帮助您重构代码。