Я пытаюсь реорганизовать мои помощники Rails и перемещать сухари и логику меню навигации в отдельные классы. Но в этих классах у меня нет доступа к params
, cookies
хэшам и т. Д. Я думаю, что прохождение параметров между иными классами - это плохая идея. Как я могу избежать этого?
Например, у меня есть:Проходящие параметры в классе помощников Rails
module NavigationHelper
def nav_item(name, path, inactive = false)
NavItem.new(params, name, path, inactive).render
end
class NavItem
include ActionView::Helpers
include Haml::Helpers
def initialize(params, name, path, inactive)
init_haml_helpers
@params = params
@name = name
@path = path
@inactive = inactive
end
def render
capture_haml do
haml_tag :li, item_class do
haml_concat link_to @name, @path
end
end
end
def item_class
klass = {class: 'active'} if active?
klass = {class: 'inactive'} if @inactive
klass
end
# Class of the current page
def active?
slug = @path.gsub /\//, ''
@params[:page] == slug || @params[:category] == slug
end
end
end
это зависимости, а управление зависимостями - непростая проблема. это нормально, так что не взламывайте, споры в методах заставляют себя думать о том, что вам действительно нужно. – apneadiving