我正在尝试通过检查控制器来保持要选择的页面上的选项卡。
即,任何显示Products
控制器的页面都应保持选中Product
选项卡。
我似乎无法找到正确的方法。
我正在考虑制作一个帮助方法,但是将帮助器放入我的link_to
帮助器中似乎有点棘手。以下是我对如何使其发挥作用的猜测:
<%= link_to "Products", products_path, current_controller?('products') ? :class => 'selected' %>
任何人都有更好的主意吗?
答案 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
当然,您可以根据自己的喜好尝试上述方法。