0

我对 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

4

3 回答 3

1

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

"#{schedule.time.to_s(:event_date)} @ #{schedule.time.to_s(:event_time)} - #{(schedule.time + schedule.duration.to_i.minutes).to_s(:event_time)}"
于 2012-08-13T08:16:06.003 回答
1

您可以在 schedule helper 中隐藏这条复杂的行,您也可以定义 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 %>
于 2012-08-13T08:18:30.303 回答
1

首先 - 扔掉几个加号和大括号,以实现这样的目标:

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

如果此构造用于多个地方,则将其封装为帮助程序也可能很有用。

于 2012-08-13T08:19:22.750 回答