我正在使用 spree 并添加自定义标签,其中包含 Deface ,例如'announcement',代码如下:
Deface::Override.new(:virtual_path => "spree/admin/shared/_menu",
:name => "admin_annoucement_tab",
:insert_top => '[data-hook="admin_tabs"]') do
"<% if can? :admin, Spree::Announcement %>
<%= tab(:announcement, :url => admin_announcements_path, :icon => 'icon-bullhorn') %>
<% end %>"
end
但单击Announcement
标签时,页面重定向正确,但未选中该标签。
我看到了navigation_helper
的源代码:
selected = if options[:match_path]
request.fullpath.starts_with?("#{admin_path}#{options[:match_path]}")
else
args.include?(controller.controller_name.to_sym)
end
但我不知道match_path
是什么
答案 0 :(得分:0)
match_path
是作为参数传递给tab
方法的选项,正如您在附加的代码中看到的那样,这是admin_path
之后的url的一部分,这意味着选择了指定的选项卡。我将从我的一个应用程序中给出一个示例:
<%= tab :bundles, match_path: '/promotions' %>
我尚未修改admin_path
,因此如果管理员将访问http://mydomain.com/admin/promotions
标签bundles
,则会进行检查。你没有附上你的路线,所以我不能写你应该在那里指定的东西,但你应该把那个标签的admin/
部分后面的任何内容放在那里。