我有两个模型,BusinessHour和StaffHour都继承了Hour。
在BusinessHour和StaffHour模型中,我执行“查找”以检索请求的小时数。之后我需要将每次格式化为特定格式,我有一个方法。 我正在试图找出放置该方法的位置。它似乎会出现在Helper中,在这种情况下,我需要在BusinessHour和StaffHour控制器调用模型来检索数据之后调用它。
否则我可以将格式化方法放在Hour模型中,并在BusinessHour和StaffHour模型中调用它,因为它们都从Hour继承。
推荐的方式是什么?
以下是方法:
def self.format_hours_for_display(hours)
hours_for_day = Hash.new("")
hours.each do |h|
h.start_time = format_time(h.start_time)
h.stop_time = format_time(h.stop_time)
hours_for_day[h.day] = h
end
hours_for_day
end
答案 0 :(得分:4)
您可以为日期和时间定义to_s的自定义格式。在config / initializers中使用以下内容创建.rb文件:
formats = {:short_full_year => '%m/%d/%Y', :short_datetime => '%m/%d/%Y %I:%M%p'}
Date::DATE_FORMATS.update(formats)
Time::DATE_FORMATS.update(formats)
然后,您可以使用您创建的任何格式调用to_s。像这样:
time = Time.now
time.to_s(:short_full_year)
答案 1 :(得分:0)
如果您已按照Jared的说法定义了自定义时间格式,则format_hours_for_display
方法仅仅是按小时分组。 Rails有一个很好的group_by
方法,你可以使用它,如下所示:
hours.group_by(&:day).each do |day, h|
puts h.start_time.to_s(:custom_format)
puts h.stop_time.to_s(:custom_format)
end