使用设计范围重新定义默认路由

Pol*_*her 3 ruby-on-rails devise

尝试使用设计范围重新定义会话路由时收到错误.

devise_for :users
devise_scope :users do
  get    '/login'   => 'devise/sessions#new',     as: :new_user_session
  post   '/login'   => 'devise/sessions#create',  as: :user_session
  delete '/logout'  => 'devise/sessions#destroy', as: :destroy_user_session
end
Run Code Online (Sandbox Code Playgroud)

错误.

Invalid route name, already in use: 'new_user_session' You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes

我理解这个错误并不是为什么会发生这种错误.范围不会重新定义为new_user_session吗?

此外,如果您按照wiki进行操作,您将获得一个设备弃用警告,用于传递块. https://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes

Pol*_*her 8

猜猜我需要跳过会话 devise_for :users, :skip => [:sessions]


sek*_*ett 5

我有同样的问题。如果你注意devise_scopemodel 必须是单数和devise_for复数。所以解决办法是:

devise_for :users
devise_scope :user do
  ...
end
Run Code Online (Sandbox Code Playgroud)