【问题标题】:How to remove devise resource name from address bar如何从地址栏中删除设计资源名称
【发布时间】:2018-01-02 11:25:45
【问题描述】:

我根据资源名(账号)有多个子域如

  • 学校 = school.mydomain.com
  • 员工 = employee.mydomain.com
  • 学生 = student.mydomain.com

我想从地址栏中删除资源名称
school.mydomain.com/schools/sign_inschool.mydomain.com/sign_in
这是 routes.rb 文件

# school employee / teacher routes and resources
devise_for :employees, :skip => [:registrations], controllers: { sessions: 'employees/sessions', passwords: 'employees/passwords' }
devise_scope :employee do 
    get 'employees/edit' => 'employees/registrations#edit', :as => 'edit_employee_registration'
    put 'employees' => 'employees/registrations#update', :as => 'employee_registration'
end
resources :employee

# school admin routes and resources
devise_for :schools, :skip => [:registrations], controllers: { sessions: 'schools/sessions', passwords: 'schools/passwords' }
devise_scope :school do 
    get 'schools/edit' => 'schools/registrations#edit', :as => 'edit_school_registration'
    put 'schools' => 'schools/registrations#update', :as => 'school_registration'
end
resources :school

# student routes and resource
devise_for :students, :skip => [:registrations], controllers: { sessions: 'students/sessions', passwords: 'students/passwords' }
devise_scope :school_district do 
    get 'students/edit' => 'students/registrations#edit', :as => 'edit_student_registration'
    put 'students' => 'students/registrations#update', :as => 'student_registration'
end
resources :student

【问题讨论】:

    标签: ruby-on-rails routing subdomain


    【解决方案1】:

    您可以在Configuring routes Devise 文档中阅读更多相关信息

    我在我的项目routes.rb file 中对此进行了测试,方法如下更改devise_for

    Rails.application.routes.draw do
        devise_for :users, path: ''
    end
    

    这是您在登录yourdomain/sign_in 时所期望的输出

    new_user_session GET      /sign_in(.:format)                     devise/sessions#new
    

    以及我的rake routes的输出

    new_user_password GET      /password/new(.:format)                devise/passwords#new
    edit_user_password GET      /password/edit(.:format)               devise/passwords#edit
    user_password PATCH    /password(.:format)                    devise/passwords#update
    PUT      /password(.:format)                    devise/passwords#update
    POST     /password(.:format)                    devise/passwords#create
    cancel_user_registration GET      /cancel(.:format)                      devise/registrations#cancel
    new_user_registration GET      /sign_up(.:format)                     devise/registrations#new
    edit_user_registration GET      /edit(.:format)                        devise/registrations#edit
    user_registration PATCH    /                                      devise/registrations#update
    PUT      /                                      devise/registrations#update
    DELETE   /                                      devise/registrations#destroy
    POST     /                                      devise/registrations#create
    

    所以我引用了

    配置路线

    Devise 还附带默认路由。如果您需要自定义它们,您应该可以通过 devise_for 方法来完成。它接受多个选项,例如 :class_name、:path_prefix 等,包括更改 I18n 路径名的可能性:

    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' }
    

    请务必查看devise_for 文档以了解详细信息。

    所以在devise_for api 文档中,您可以更好地了解如何使用pathpath_names

    确保不要在这些 url 之间产生冲突

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多