Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails路由中的作用域未在URL中前置参数_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 4_Devise_Routes - Fatal编程技术网

Ruby on rails rails路由中的作用域未在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 "

我需要在每个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" 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