2013-12-04 2 views
4

Я использую devise и хочу указать другую переадресацию после обновления пользователя на основе условного оператора. Я сделал это https://github.com/plataformatec/devise/wiki/How-To:-Customize-the-redirect-after-a-user-edits-their-profile, и он не вызывает мой пользовательский метод after_update_path_for.Придумайте custom after_update_path_for не вызывается (Rails 4)

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 

Любая помощь очень ценится. Это действительно потрясает меня, поэтому, если у кого-то есть идеи, которые я бы хотел попробовать.

ответ

5

Вы должны изменить

put 'users/:id' => 'devise/registrations#update', :as => 'user_registration' 

использовать контроллер пользовательских RegistrationsController. Так это будет:

put 'users/:id' => 'registrations#update', :as => 'user_registration' 
+0

спасибо. Проблема была в этом маршруте. –

0

Принятый ответ на @NARKOZ не работает для меня Rails 4. Я должен был переопределить контроллер DEViSE паролей, как это:

# 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

Смежные вопросы