如何为 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