我有一个应用程序我正在使用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%确定如何使其工作。
非常感谢任何帮助或重构建议。
答案 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
希望它可以帮助您重构代码。