Я пишу помощников, чтобы сделать мои взгляды очень чистыми;однако помощники не являются классами, а просто набором методов внутри модуля.В результате эти методы не разделяют данные, как если бы инициализированные были вызваны с params.Так что я заканчиваю тем, что передавал данные несколько раз.Это раздражает.Есть ли способ поместить их в класс, который разделяет значения?
Вот пример, который я пытаюсь высохнуть - и да, это далеко не оптимальный код, пожалуйста, просто сфокусируйтесь на проблеме, которую я пытаюсьперебрать;Я бы предпочел не тратить время на создание идеального примера.Ниже приведены параметры, но я в итоге передаю их дополнительным методам и т. Д.
module Dashboard::DashboardHelper
def menu_item(link_ref, options={})
title = options.fetch(:title, "")
details = options.fetch(:details, "")
highlight = options.fetch(:highlight, false)
icon = options.fetch(:icon, "")
first = options.fetch(:first, false)
subs = options.fetch(:subs, [])
link_item_class = (first) ? "m-t-30" : " "
content_tag(:li,
menu_link_label(link_ref,title,details,icon,highlight),
class: link_item_class
)
end
def menu_link_label(link_ref, title, details, icon, highlight)
link_to(menu_labels(title,details), link_ref, class: "detailed") +
icon_thumbnail(icon,highlight)
end
def menu_labels(title, details)
content_tag(:span, title, class: "title") +
content_tag(:span, details, class: "details")
end
def icon_thumbnail(name, family, highlight=true)
classes = (highlight) ? "bg-success icon-thumbnail" : "icon-thumbnail"
content_tag(:span,icon(name, family), class: classes)
end
def icon(name)
(name.present?) ? content_tag(:i, nil, class:"fas fa-#{name}") : ""
end
end
Редактировать:
Хэш параметров поступает напрямуюиз вида обычно в форме ниже:
<%= menu_item dashboard_root_path,
title: "Dashboard",
details: "12 New Updates",
icon: "fe:home",
first: true,
highlight: true
%>