2013-09-25 32 views
0

我正在尝试重构我的Rails帮助程序,并将面包屑和导航菜单逻辑移入单独的类中。但在这些类中,我无法访问paramscookies散列等。我认为在不同类之间传递params并不是一个好主意。我怎样才能避免这种情况?
比如我有:在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的的。你完成的方式对我来说似乎是正确的。你必须至少传递params,cookies一次来初始化你的课程。