Дата и время в ROR - PullRequest
       6

Дата и время в ROR

2 голосов
/ 23 июля 2010

В моем приложении я хочу, чтобы время / дата отображались как месяц / год (например, 7/10).Проблема в том, что иногда я получаю класс Date, а иногда класс Time, поэтому я получаю следующий код в контроллере приложения ...

class Date
  def as_month_and_year
    self.strftime("%m").to_i.to_s + self.strftime("/%y")
  end
end

class Time
  def as_month_and_year
    self.strftime("%m").to_i.to_s + self.strftime("/%y")
  end
end

Каков наилучший способ высушить это?

Ответы [ 3 ]

2 голосов
/ 23 июля 2010

Я бы создал вспомогательный метод представления, который принимает экземпляр даты или времени и форматирует соответствующим образом. Нет необходимости заново открывать классы Date и Time. Это именно то, для чего предназначены вспомогательные модули вида.

def as_month_and_year(date)
  date.strftime("%m").to_i.to_s + self.strftime("/%y") 
end

Тогда в ваших взглядах вы можете просто использовать:

<%= as_month_and_year(@object.created_at)
1 голос
/ 23 июля 2010

ИМХО более элегантное решение:

module DateTimeExtensions
  def as_months_and_year
    self.strftime('%m/%y').sub(/^0/,'')
  end
  [Time, Date, DateTime].each{ |o| o.send :include, self }
end
1 голос
/ 23 июля 2010

Может как то так?

module DateTimeExtensions
  def as_month_and_year
    self.strftime("%m").to_i.to_s + self.strftime("/%y")
  end
end

class Date; include DateTimeExtensions; end
class Time; include DateTimeExtensions; end
class DateTime; include DateTimeExtensions; end
...