Spree中的自定义管理选项卡,但无法选择

时间:2014-01-05 15:24:43

标签: spree

我正在使用 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是什么

1 个答案:

答案 0 :(得分:0)

match_path是作为参数传递给tab方法的选项,正如您在附加的代码中看到的那样,这是admin_path之后的url的一部分,这意味着选择了指定的选项卡。我将从我的一个应用程序中给出一个示例:

 <%= tab :bundles, match_path: '/promotions' %>

我尚未修改admin_path,因此如果管理员将访问http://mydomain.com/admin/promotions标签bundles,则会进行检查。你没有附上你的路线,所以我不能写你应该在那里指定的东西,但你应该把那个标签的admin/部分后面的任何内容放在那里。