use*_*823 5 controller ruby-on-rails devise
我在设计控制器中添加动作时遇到了一些麻烦.我创建了registrations_controller
一个users/
像这样的文件夹中命名的控制器:
class Users::RegistrationsController < Devise::RegistrationsController
Run Code Online (Sandbox Code Playgroud)
并且,有我的路线文件:
root to: 'home#index'
devise_for :users
devise_scope :users do
get 'users/profil/:id', to: 'users/registrations#profil', as: 'profil'
end
Run Code Online (Sandbox Code Playgroud)
我看到以下错误:
Unknown action
Could not find devise mapping for path "/users/profil/1"
This may happen for two reasons: 1) You forgot to wrap your route inside the scope block. For example: devise_scope :user do get "/some/route" => "some_devise_controller" end 2) You are testing a Devise controller bypassing the router.
Run Code Online (Sandbox Code Playgroud)
我的代码出了什么问题?
请尝试以下方法:
devise_scope :user do
get 'users/profil/:id', to: 'users/registrations#profil', as: 'profil'
end
devise_for :users, :controllers => {:registrations => "users/registrations"}
resources :users
Run Code Online (Sandbox Code Playgroud)
此外,您不需要为控制器Users::RegistrationsController
命名,RegistrationController
将其命名为保持继承Devise::RegistrationsController