更干净的代码,连接调用

时间:2012-08-13 08:03:15

标签: ruby-on-rails haml string-interpolation

对于RoR来说,我仍然相当新,并且一直在寻找更好,更有效的编码方式。使用以下代码行,是否有更好的方法可以实现相同的结果?

= "#{schedule.time.to_s(:event_date) + " @ " + schedule.time.to_s(:event_time) + " - " + (schedule.time + schedule.duration.to_i.minutes).to_s(:event_time)}"

将输出

Fri, 31 Aug, 2012 @ 10:40 PM - 11:40 PM

3 个答案:

答案 0 :(得分:1)

不确定时间格式是否可以做得更好,但你的字符串应该更像:

"#{schedule.time.to_s(:event_date)} @ #{schedule.time.to_s(:event_time)} - #{(schedule.time + schedule.duration.to_i.minutes).to_s(:event_time)}"

答案 1 :(得分:1)

您可以在计划帮助程序中隐藏此复杂行,您也可以定义schedule.end_time

module ScheduleHelper
  def schedule_time schedule
    html = ''
    html << schedule.time.to_s(:event_date)
    html << ' @ '
    html << schedule.time.to_s(:event_time)
    html << ' - '
    html << schedule.end_time.to_s(:event_time)
    raw html
  end
end

class Schedule
  def end_time
    self.time + this.duration.to_i.minutes
  end
end

<%= schedule_time schedule %>

答案 2 :(得分:1)

首先 - 抛弃几个优点和支撑,以达到这样的目的:

= "#{schedule.time.to_s(:event_date)} @ #{schedule.time.to_s(:event_time)} - #{(schedule.time + schedule.duration.to_i.minutes).to_s(:event_time)}"

如果在多个地方使用这种结构,将它封装到帮助器可能也很有用。