如何为 rails + 设计编写特定的自定义路由?
How to write specific custom routes for rails + devise?
我正在尝试编写一个自定义路由,它将指向设计中的自定义控制器操作。
我现在有下面的设置。
# custom controller
class Registrations::RegistrationsController < Devise::RegistrationsController
layout 'settings'
# GET /resource/edit
def edit
super
end
end
# routing setup
Rails.application.routes.draw do
devise_for :users, controllers: { registrations: "registrations/registrations" },
path_names: { edit: 'profile' }
end
这让我可以毫无问题地自定义 URL localhost:4000/users/profile。
我的问题是如何进一步自定义它
localhost:4000/个人资料
localhost:4000/settings/profile
注意我知道我可以设置 path: '' or path: 'settings'
,但这会影响用户内的所有路由。
有没有什么办法可以
localhost:4000/settings/profile 和 localhost:4000/ 同时登录 devise_for?
我不确定如何分别控制这些影响。
正如我们所见 here,我们可以使用 Rails 作用域并为 'registration' 指定一个控制器,例如。像这样:
scope :settings do
devise_scope :user do
get '/profile' => 'devise/registrations#edit'
end
end
我正在尝试编写一个自定义路由,它将指向设计中的自定义控制器操作。
我现在有下面的设置。
# custom controller
class Registrations::RegistrationsController < Devise::RegistrationsController
layout 'settings'
# GET /resource/edit
def edit
super
end
end
# routing setup
Rails.application.routes.draw do
devise_for :users, controllers: { registrations: "registrations/registrations" },
path_names: { edit: 'profile' }
end
这让我可以毫无问题地自定义 URL localhost:4000/users/profile。
我的问题是如何进一步自定义它
localhost:4000/个人资料 localhost:4000/settings/profile
注意我知道我可以设置 path: '' or path: 'settings'
,但这会影响用户内的所有路由。
有没有什么办法可以
localhost:4000/settings/profile 和 localhost:4000/ 同时登录 devise_for?
我不确定如何分别控制这些影响。
正如我们所见 here,我们可以使用 Rails 作用域并为 'registration' 指定一个控制器,例如。像这样:
scope :settings do
devise_scope :user do
get '/profile' => 'devise/registrations#edit'
end
end