我正在spree 2.1上构建一个自定义选项卡,我在我的Deface覆盖上有这个工作正常,但是当我尝试点击我的选项卡已经在这个选项卡上它转到url / admin / admin / places 。所以我需要这个总是去/ admin / places。
找到这个https://codeclimate.com/github/spree/spree/Spree::Admin::NavigationHelper,它说该选项卡接受第一个参数并创建路径admin_places_path。
:insert_after => "[data-hook='admin_tabs']",
:text => "<%= tab :places, :icon => 'icon-th-large'%>"
我尝试了通常:url param with'admin / places'但得到了相同的结果,并且正在寻找导致我进入codeclimate的标签实现,现在在这里。有人知道如何避免这种情况吗?
答案 0 :(得分:6)
这就是我解决的问题:
:text => "<%= tab :places, :icon => 'icon-th-large', url: main_app.admin_places_path %>"
在搜索我的答案时,我发现我的地方路线位于我的app命名空间内,而不是在spree中。
namespace :admin do
# Directs /admin/products/* to Admin::ProductsController
# (app/controllers/admin/products_controller.rb)
resources :places
end
因此,要访问我必须放置“main_app”的路径。在目标路径之前。见这里:Adding Routes to Rails' Spree E-Commerce
查看codeclimate代码我看到url param被设置为destination并可以使用它来放置“main_app”。在路径之前,现在正在工作。
修改强>
发现它是一种更好的方法。
路线
Spree::Core::Engine.routes.prepend do
namespace :admin do
# Directs /admin/products/* to Admin::ProductsController
# (app/controllers/admin/products_controller.rb)
resources :places
end
end
将我的所有文件夹(控制器和视图)从控制器/视图&gt;位置移动到控制器/视图&gt; spree&gt; admin&gt;位置
删除了“my_app”。现在它工作得更好更容易。