链接助手,current_pages和导航

时间:2011-05-11 11:53:31

标签: ruby-on-rails ruby-on-rails-3

我正在尝试通过检查控制器来保持要选择的页面上的选项卡。 即,任何显示Products控制器的页面都应保持选中Product选项卡。 我似乎无法找到正确的方法。 我正在考虑制作一个帮助方法,但是将帮助器放入我的link_to帮助器中似乎有点棘手。以下是我对如何使其发挥作用的猜测:

<%= link_to "Products", products_path, current_controller?('products') ? :class => 'selected' %>

任何人都有更好的主意吗?

1 个答案:

答案 0 :(得分:1)

问题不只是在一个地方,你会有很多标签,每个标签都会有关于哪些控制器+动作/动作组合的规则。

这是一个常见的问题,有些人也为此写过“插件”。

我建议你写帮手。制作自己的迷你DSL。为自己决定什么是容易和好看的:

<%= link_to_tab_for("Products", products_path, :controller => "sss", :action => "", :other_html_options => {})

下一步,在helpers / application.rb

中实现此方法
def link_to_tab_for(name, path, options)
  controller = options.delete(:controller)
  action = options.delete(:controller)
  klass = [].push(options[:class]).compact
  if current_controller?(controller) && (action ? current_action?(action) : true)
    klass.push("selected")
  end
  options[:class] = klass.empty ? "" : klass.join(" ")
  link_to(name, path, options)
end

当然,您可以根据自己的喜好尝试上述方法。