如何指定创建路由时应该使用哪些控制器?

How to specify what controllers should be used when creating routes?

我正在创建一个 Rails 应用程序,我试图不使用 Devise 来处理与我的 User 模型相关的注册和会话,但我 运行成问题。

我想要这样的特定路线:

我尝试了几种解决方案,但 none 有效,最后尝试的是那些代码行:

get "users/registrations/new", to: "registrations#new", controller: "users/registrations", as: :new_registration
get "users/sessions/new", to: "sessions#new", controller: "users/sessions", as: :new_session

但是我得到以下错误:uninitialized constant RegistrationsController

我的 registrations_controller 和我的 sessions_controller 位于以下路径中:app/controllers/users/

有人知道我该如何处理吗?我应该使用 resources 还是 namespace?我已经尝试过这些解决方案,但我一直面临同样的问题...

感谢您的帮助!

您使用 to: "namespace/name_of_controller#action",在您的情况下

get "users/registrations/new", to: "users/registrations#new", as: :new_registration
get "users/sessions/new", to: "users/sessions#new", as: :new_session

另一种更“Rails-y”的方法是使用namespace

namespace :users do
  resources :registrations, only: [:new] # If you want only the new action
  # ...
end