ruby-on-rails – 操作方法:设计after_sign_up_redirect?
我试着按照这里的说明(
GitHub Devise Wiki),但它不适合我.
我想在用户注册后让Devise重定向到/ welcome.我创建了一个注册控制器,但它永远不会进入视图.我在这做错了什么? Ruby 1.9.2 谢谢 更新: 由于某种原因,未触发after_sign_up_path_for但触发了after_sign_in_path_for.我仍然想让after_sign_up_path_for工作 _app /控制器/ registrations_controller.rb_ class RegistrationsController < Devise::RegistrationsController protected def after_sign_up_path_for(resource) welcome_path end end 这是我的config / routs.rb MyApp::Application.routes.draw do devise_for :users root :to => 'pages#home' match "/users",:to => "users#all" match "/users/:id",:to => "users#show",:as => :user match "/welcome",:to => "users#welcome",:as => :user devise_for :users,:controllers => { :registrations => "registrations" } do get "/login",:to => "devise/sessions#new" get "/register",:to => "devise/registrations#new" get "/logout",:to => "devise/sessions#destroy" get '/account' => 'devise/registrations#edit' end end 耙路线的输出 new_user_session GET /users/sign_in(.:format) {:action=>"new",:controller=>"devise/sessions"} user_session POST /users/sign_in(.:format) {:action=>"create",:controller=>"devise/sessions"} destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy",:controller=>"devise/sessions"} user_omniauth_callback /users/auth/:action/callback(.:format) {:action=>/(?!)/,:controller=>"devise/omniauth_callbacks"} user_password POST /users/password(.:format) {:action=>"create",:controller=>"devise/passwords"} new_user_password GET /users/password/new(.:format) {:action=>"new",:controller=>"devise/passwords"} edit_user_password GET /users/password/edit(.:format) {:action=>"edit",:controller=>"devise/passwords"} PUT /users/password(.:format) {:action=>"update",:controller=>"devise/passwords"} cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel",:controller=>"devise/registrations"} user_registration POST /users(.:format) {:action=>"create",:controller=>"devise/registrations"} new_user_registration GET /users/sign_up(.:format) {:action=>"new",:controller=>"devise/registrations"} edit_user_registration GET /users/edit(.:format) {:action=>"edit",:controller=>"devise/registrations"} PUT /users(.:format) {:action=>"update",:controller=>"devise/registrations"} DELETE /users(.:format) {:action=>"destroy",:controller=>"devise/registrations"} root / {:controller=>"pages",:action=>"home"} users /users(.:format) {:controller=>"users",:action=>"all"} user /users/:id(.:format) {:controller=>"users",:action=>"show"} user /welcome(.:format) {:controller=>"users",:action=>"welcome"} login GET /login(.:format) {:controller=>"devise/sessions",:action=>"new"} register GET /register(.:format) {:controller=>"devise/registrations",:action=>"new"} logout GET /logout(.:format) {:controller=>"devise/sessions",:action=>"destroy"} account GET /account(.:format) {:controller=>"devise/registrations",:action=>"edit"} new_user_session GET /users/sign_in(.:format) {:action=>"new",:controller=>"devise/sessions"} POST /users/sign_in(.:format) {:action=>"create",:controller=>"devise/omniauth_callbacks"} POST /users/password(.:format) {:action=>"create",:controller=>"devise/passwords"} GET /users/password/new(.:format) {:action=>"new",:controller=>"devise/passwords"} GET /users/password/edit(.:format) {:action=>"edit",:controller=>"devise/passwords"} GET /users/cancel(.:format) {:action=>"cancel",:controller=>"registrations"} POST /users(.:format) {:action=>"create",:controller=>"registrations"} GET /users/sign_up(.:format) {:action=>"new",:controller=>"registrations"} GET /users/edit(.:format) {:action=>"edit",:controller=>"registrations"} PUT /users(.:format) {:action=>"update",:controller=>"registrations"} DELETE /users(.:format) {:action=>"destroy",:controller=>"registrations"} 解决方法
您在routes.rb中有两次devise_for:users.更改routes.rb如下:
MyApp::Application.routes.draw do devise_for :users,:to => "devise/sessions#destroy" get '/account' => 'devise/registrations#edit' end root :to => 'pages#home' match "/users",:as => :user end 如果您有激活/取消激活逻辑,则必须覆盖after_inactive_sign_up_path_for,如设计wiki中所述.注册后你能告诉它被重定向到哪里吗? after_sign_in_path_for工作的原因可能是您拥有相同的sessions_controller和不同的registrations_controller,因此登录按预期工作,并且注册路由因为您已定义两次而被阻止,因此所有注册请求和操作都在设计/注册而不是您的自定义注册控制器. 所以删除它,如上所述更改routes.rb,看看会发生什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |