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.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 に答える
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 に答える