Как оформить формат даты для 3 разных полей с помощью Draper decorator gem
Я хочу украсить свои 3 даты, используя шаблон декоратора, я сделал то, что необходимо сделать для реализации шаблона декоратора, я написал следующий код в декораторе, чтобы украсить мои поля даты
def date1
model.date1.strftime("%d-%m-%y")
end
def date2
model.date2.strftime("%d-%m-%y")
end
def date3
model.date3.strftime("%d-%m-%y")
end
и вид я звоню следующим образом
= @example.date1
= @example.date2
= @example.date3
Таким образом, все методы, написанные в вышеупомянутых декораторах, выполняют одну и ту же задачу, поэтому я реорганизовал этот и один базовый декоратор, который содержит только один метод форматирования, поэтому вышеприведенный декоратор наследует от базового декоратора
подобно
class BaseDecorator < Draper::Decorator
def format_date(model_name, attribute_name)
model_name.attributes[attriburte_name].strftime("%d-%m-%Y")
end
end
и мой суб декоратор выглядит так
class ExampleDecorator < BaseDecorator
def date1
format_date(model, "date1")
end
def date2
format_date(model, "date2")
end
def date3
format_date(model, "date3")
end
end
Итак, теперь мой вопрос в суб-декораторе, тот же код повторяется, поэтому я хочу реорганизовать мой код, как мне реорганизовать мой код?
1 ответ
Вы можете рефакторинг это так же, как вы сделали в BaseDecorator
учебный класс:
class ExampleDecorator < BaseDecorator
def formatted_date(attribute_name)
format_date(model, attribute_name)
end
end
И по вашему мнению:
<%= @example.formatted_date("date1") %>