在Rails助手类中传递参数

时间:2013-09-25 08:49:32

标签: ruby-on-rails ruby

我正在尝试重构我的Rails助手并将面包屑和导航菜单逻辑移动到单独的类中。但在这些课程中,我无法访问paramscookies哈希等。我认为在不同类之间传递参数是一个坏主意。我怎么能避免这种情况?
例如,我有:

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

1 个答案:

答案 0 :(得分:0)

我不认为Rails提供任何从ActionPack访问Params的机制。你做的方式对我来说似乎是正确的。你必须至少传递一下params,cookies来初始化你的课程。