У меня есть представление, которое печатает дату, когда # {@ event.starts_at.strftime ("% m /% d /% Y% H:% M")}. Поэтому каждый раз, когда я печатаю start_at, мне нужно использовать strftime в представлении. Мне нужно найти способ добавления метода к моей модели «событий», так что дата автоматически отформатируется каждый раз, когда я печатаю событие event.starts_at или event.method_name (start_at)Формат даты и времени в модели в рельсах
ответ
Вы можете добавить метод, но он будет загрязнять модель с логикой представления связаны между собой. Лучший способ - создать декоратор для этих целей, если вы новичок с декораторами, то вы можете добавить его в модель.
def starts_at_format format = "%m/%d/%Y %H:%M"
starts_at.strftime(format)
end
Теперь вы можете использовать starts_at_format
, и он будет автоматически форматировать дату
format
имеет значение по умолчанию, так что если когда-либо позже нужно использовать другой формат просто передать аргумент.
Вы можете это использовать в качестве:
starts_at_format
или
starts_at_format("%m %d %b") # define format
Вы можете переопределить геттер следующим образом:
class Event < ActiveRecord::Base
def starts_at
attributes['starts_at'].strftime("%m/%d/%Y %H:%M")
end
end
Примите во внимание, что вы должны использовать строку, а не символ для хэша атрибутов.
это сказал, это блокирует вас, если ваше приложение пытается получить интернационализированы, поскольку форматы времени различны в зависимости от районов
Вы можете использовать рельсы I18N для него:
de.yml
de:
time:
formats:
default: '%A, %d. %B %Y, %H:%M Uhr'
long: '%A, %d. %B %Y, %H:%M Uhr'
short: '%d. %B, %H:%M Uhr'
very_short: '%d.%m.%Y, %H:%M Uhr'
С, что вы могли бы использовать:
> I18n.localize Event.first.starts_at, format: :very_short
# => "26.11.2012, 10:35 Uhr"
localize
метод псевдонимами к I18n.l
и он будет использовать правильный (если они определены)
Спасибо за ответы. Я нашел его, добавив формат к инициализаторам и выяснив проблему
Рассмотрите возможность использования декораторов с draper.
Просто создайте декоратора
class EventDecorator < Draper::Decorator
delegate_all
def starts_at
object.starts_at.strftime("%m/%d/%Y %H:%M")
end
end
В контроллере сделать что-то вроде
@event = Event.find(params[:id]).decorate
можно также использовать для нескольких объектов
@events = Event.all.decorate
и ввиду будет AUT omatically служил так, как вы его украсили;)
- 1. Пользовательский формат даты и времени в рельсах 4
- 2. Формат времени в сборщике даты и времени
- 3. Формат даты и времени
- 4. Преобразование даты и времени в формат даты и времени
- 5. изменить формат даты и времени на формат даты в метке
- 6. Как преобразовать формат даты в формат даты и времени?
- 7. Включить выбор даты и времени в рубине на рельсах
- 8. Формат даты и времени Wp
- 9. Python: формат даты и времени
- 10. формат даты и времени андроид
- 11. недействительный формат даты и времени
- 12. Изменить формат даты и времени
- 13. Формат текущей даты и времени
- 14. Формат даты и времени вывода
- 15. Symfony2 Формат даты и времени
- 16. Формат даты и времени HTML5
- 17. формат даты/времени в PHP
- 18. Панды - формат даты и времени в миллисекундах
- 19. Преобразование даты и времени в формат г
- 20. Преобразовать формат даты и времени в XSLT
- 21. Изменить формат даты и времени в MariaDB
- 22. Формат даты и времени в оси pyplot
- 23. Формат даты и времени в Android
- 24. формат даты и времени в SSIS
- 25. Формат даты и времени в начальной форме
- 26. преобразование строки в формат даты и времени
- 27. эпоха в формат даты и времени
- 28. формат даты и времени в приложении IOS
- 29. Формат даты и времени в FullCalendarJS
- 30. Преобразование даты и времени в определенный формат?