Я посмотрел повсюду и нашел много информации... но ничего не работает для меня, и я не понимаю: (
Я знаю, что вы можете переопределить контроллер регистрации, например:
class Users::RegistrationsController < Devise::RegistrationsController
def after_sign_up_path_for(resource)
authors_waiting_path
end
end
Затем, следуя примеру, показанному Тони Амаллом http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/, я должен изменить свои маршруты, чтобы обновить доступ к новому контроллеру:
devise_for :users, :controllers => { :registrations => "users/registrations" } do
#get '/author/sign_up', :to => 'devise/registrations#new'
#get '/client/sign_up', :to => 'devise/registrations#new'
get '/author/sign_up', :to => 'users/registrations#new'
get '/client/sign_up', :to => 'users/registrations#new'
end
Да, у меня здесь кое-что странное, потому что я нахожу какой-то определенный путь, чтобы отправить их на страницу регистрации, это позволяет мне эффективно создать 2 сценария регистрации. Я прокомментировал, что у меня было до того, как переопределил регистрационный контроллер.
Даже если все это и мой author_waiting_path являются допустимым путем, он просто продолжает переходить на страницу входа после регистрации: (
Это действительно разочаровывает.
Алекс
edit: Я также нашел это на вики-разработке: https://github.com/plataformatec/devise/wiki/How-To:-Redirect-after-registration-(sign-up)
Но я понятия не имею, где определить этот метод создания? должен ли я переопределить контроллер сеанса???
edit 2:
Я помещаю фиктивное переопределение контроллера:
class Pouets::RegistrationsController < Devise::RegistrationsController
def after_sign_up_path_for(resource)
authors_waiting_path
end
def new
super
end
def create
puts "was here"
super
end
def edit
super
end
def update
super
end
def destroy
super
end
def cancel
super
end
end
И я никогда не был "здесь" в моих журналах... У меня действительно есть ощущение, что он полностью игнорирует переопределение... Я должен делать что-то неправильно: (