繁体   English   中英

更改默认路线Devise Rails

[英]Change default routes Devise Rails

我有这个routes.rb

  devise_for :users, :path => '', path_names: 
                          { sign_in: "login", sign_out: "logout", sign_up: "registration"}

我更改了sign_insign_up路由,如果您转到sign_up ,则会收到404错误,而/registration将起作用。 我想要以相同的方式更改和添加其他路径,例如忘记密码。 如果我在控制台中输入rake routes ,那么我会看到以下密码:

new_user_password GET /password/new(.:format)devise / passwords#new

如何以我的自定义定义的路由可以使用的方式添加其他路由,而不使用默认路由?

这是会话,注册和密码控制器操作/路由的示例:

devise_for :users, skip: [:sessions, :registrations, :passwords]

devise_scope :user do
  # sessions
  get    'login',  to: 'devise/sessions#new',     as: :new_user_session
  post   'login',  to: 'devise/sessions#create',  as: :user_session
  delete 'logout', to: 'devise/sessions#destroy', as: :destroy_user_session
  # registrations
  put    '/account',  to: 'devise/registrations#update'
  delete '/account',  to: 'devise/registrations#destroy'
  post   '/account',  to: 'devise/registrations#create'
  get    '/register', to: 'devise/registrations#new',    as: :new_user_registration
  get    '/account',  to: 'devise/registrations#edit',   as: :edit_user_registration
  patch  '/account',  to: 'devise/registrations#update', as: :user_registration
  get    '/account/cancel', to: 'devise/registrations#cancel', as: :cancel_user_registration# passwords 
  # passwords
  get   'new-pass',  to: 'devise/passwords#new',    as: :new_user_password
  get   'edit-pass', to: 'devise/passwords#edit',   as: :edit_user_password
  patch 'edit-pass', to: 'devise/passwords#update', as: :user_password
  post  'new-pass',  to: 'devise/passwords#create', as: :user_password
end

本Wiki中的第4个代码示例块所示

您需要跳过passwords并根据需要重建其路由,

devise_for :users, skip: [:passwords]
devise_scope :user do
  match '/forgotten-password' => 'devise/passwords#create', as: :user_password, via: [:post]
  match '/forgotten-password' => 'devise/passwords#update', via: [:put, :patch]
  get 'forgotten-password', to: 'devise/passwords#new', as: :new_user_password

结束

您的自定义路线将起作用。 并且跳过该模块中的所有路由。

注意:您需要根据需要覆盖该模块的所有剩余路由。

请务必在此处签出ActionDispatch :: Routing :: Mapper#devise_for文档。

您可以简单地做这样的事情-

devise_for :users, path: 'auth', path_names: { sign_in: 'login', 
                                               sign_out: 'logout',
                                               password: 'secret',
                                               confirmation: 'verification',
                                               unlock: 'unblock', 
                                               registration: 'register',
                                               sign_up: 'cmon_let_me_in' }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM