2013-09-25 7 views
0

Я пытаюсь реорганизовать мои помощники 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 
+0

это зависимости, а управление зависимостями - непростая проблема. это нормально, так что не взламывайте, споры в методах заставляют себя думать о том, что вам действительно нужно. – apneadiving

ответ

0

Я не думаю, что Rails обеспечить любой механизм доступа Params из ActionPack. То, как вы это сделали, кажется мне правильным. Вы должны передать параметры, куки, по крайней мере, один раз, чтобы инициализировать свои классы.

Смежные вопросы