Ruby on rails rails路由中的作用域未在URL中前置参数
我需要在每个url中添加Ruby on rails rails路由中的作用域未在URL中前置参数,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,devise,routes,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,Devise,Routes,我需要在每个url中添加abc/admin。例如 http://0.0.0.0:3000/abc/admin/admins/sign_in # USING ADMIN AS DEVISE MODEL http://0.0.0.0:3000/abs/admin/products http://0.0.0.0:3000/abs/admin/products/:id http://0.0.0.0:3000/abs/admin/categories 等等,现在我试着 scope "
abc/admin
。例如
http://0.0.0.0:3000/abc/admin/admins/sign_in # USING ADMIN AS DEVISE MODEL
http://0.0.0.0:3000/abs/admin/products
http://0.0.0.0:3000/abs/admin/products/:id
http://0.0.0.0:3000/abs/admin/categories
等等,现在我试着
scope "abc/admin" do
resources :products, :categories
end
它创建了一些URL
products GET /abc/admin/products(.:format) products#index
POST /abc/admin/products(.:format) products#create
new_role GET /abc/admin/products/new(.:format) products#new
对于Admin
型号,我尝试使用
scope "abc/admin" do
devise_for :admins, :controllers => {:sessions=>"admin/sessions", :registrations=>'admin/registrations'}
end
它还创建URL
如下:
admin_registration POST /abc/admin/admins(.:format) admin/registrations#create
new_admin_registration GET /abc/admin/admins/sign_up(.:format) admin/registrations#new
现在
new\u admin\u registration\u path
重定向到http://0.0.0.0:3000/admins/sign_up
它不考虑范围。我不知道如何在designe和其他控制器的URL中实现scope参数。@Choco是正确的,您应该只声明一次名称空间。然后所有的东西都进入了这个街区
namespace "abc/admin" do
resources :products, :categories
devise_for :admins, :controllers => {:sessions=>"admin/sessions", :registrations=>'admin/registrations'}
end
然后,您的路径帮助器成为新的\u abc\u admin\u admin\u registration\u路径。请参见此处获取信息:您可以使用
名称空间
像名称空间“abc/admin”这样的名称空间为:admins、:controllers=>{:sessions=>“admin/sessions”、:registrations=>'admin/registrations'}end
尝试一下`做得好,我会被中止!ArgumentError:无效的路由名称:“abc/admin\U products”错误。如何解决此错误?您使用了什么路径?对于产品,它应该是:abc\u admin\u products\u path