ruby-on-rails 无效的路由名称,已在使用中:"根"

vc9ivgsu  于 2023-02-14  发布在  Ruby
关注(0)|答案(2)|浏览(110)

我得到:
无效的路由名称,已在使用中:'root'您可能已使用:as选项定义了两个同名的路由,或者您可能正在覆盖已由同名资源定义的路由。对于后者,您可以限制使用resources创建的路由,如下所述:www.example.comhttps://guides.rubyonrails.org/routing.html#restricting-the-routes-created
routes.rb

AlectricaSite::Application.routes.draw do

  constraints lambda{ |req| ( req.subdomain == 'shop' || req.subdomain == 'servicios' ) } do
    root to: 'comercio/servicios#index'
  end
  constraints lambda{ |req|  req.subdomain == 'www' } do
    root to: 'electrico/album#hola'
  end
end

当试图为每个子域(www、shop、servicios)设置根路径时。
这个解决方案适用于rails 5,但是rails 6.1对此表示不满。

dvtswwa3

dvtswwa31#

我认为这可能是因为您在两个不同的路由中使用了相同的根名称,所以您的路由中遇到了冲突。
也许你可以试试:

AlectricaSite::Application.routes.draw do
  constraints lambda { |req| req.subdomain == 'shop' || req.subdomain == 'servicios' } do
    get '/', to: 'comercio/servicios#index', as: 'comercio_root'
  end

  constraints lambda { |req| req.subdomain == 'www' } do
    get '/', to: 'electrico/album#hola', as: 'electrico_root'
  end
end

这些路由的帮助器方法应为comercio_root_pathelectrico_root_path

euoag5mw

euoag5mw2#

A这样做找到了解决方案:

AlectricaSite::Application.routes.draw do

  get '/', to: 'comercio/servicios#index', constraints: { subdomain: 'shop' }
  get '/', to: 'comercio/servicios#index', constraints: { subdomain: 'servicios' }

  root to: 'electrico/album#hola'
....
end

相关问题