我正在使用设计,并希望在根据条件语句更新用户后指定不同的重定向。我确实遵循了这个https://github.com/plataformatec/devise/wiki/How-To:-Customize-the-redirect-after-a-user-edits-their-profile并且没有调用我的自定义after_update_path_for方法。
routes.rb
devise_for :users, :skip => [:registrations], :controllers => { :registrations => :registrations }
as :user do
get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
put 'users/:id' => 'devise/registrations#update', :as => 'user_registration'
end
我有跳过注册的原因是因为我不希望为用户创建新的路径并创建路径。我不确定问题是否与路线或其他内容有关。
以下是registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
protected
def after_update_path_for(resource)
binding.pry
if current_user.position == "owner" && current_user.sign_in_count == 1
hub_landing_path
end
end
end
非常感谢任何帮助。这真的让我感到难过,所以如果有人有任何想法,我很乐意尝试一下。
答案 0 :(得分:5)
您需要更改
put 'users/:id' => 'devise/registrations#update', :as => 'user_registration'
使用自定义RegistrationsController
控制器。所以它将是:
put 'users/:id' => 'registrations#update', :as => 'user_registration'
答案 1 :(得分:0)
@NARKOZ接受的答案对我来说对Rails 4不起作用。我必须像这样覆盖Devise Passwords控制器:
# users/passwords_controller.rb
class Users::PasswordsController < Devise::PasswordsController
protected
def after_resetting_password_path_for(resource)
signed_in_root_path(resource)
end
end
此处有关于此方法的文档:https://github.com/plataformatec/devise/wiki/How-To:-redirect-to-a-specific-page-on-successful-sign-in