【发布时间】:2017-02-19 12:44:17
【问题描述】:
我正在尝试配置 Devise,以便每当未确认帐户的用户登录时,他都会被重定向到 new_confirmation_path。
这是我到目前为止所得到的:
lib/custom_failure.rb
class CustomFailure < Devise::FailureApp
def redirect_url
if warden_message == :unconfirmed
redirect_to new_user_confirmation_path(q: "unconfirmed")
else
super
end
end
def respond
if http_auth?
http_auth
else
redirect
end
end
end
config/application.rb
config.autoload_paths << Rails.root.join('lib')
config/initializers/devise.rb
config.warden do |manager|
manager.failure_app = CustomFailure
end
很遗憾,每当用户尝试登录时,我都会收到以下错误:
AbstractController::DoubleRenderError in Users::SessionsController#create
在此操作中多次调用渲染和/或重定向。请注意,您只能调用渲染或重定向,并且每个操作最多调用一次。另请注意,重定向和渲染都不会终止操作的执行,因此如果您想在重定向后退出操作,则需要执行“redirect_to(...) and return”之类的操作。
lib/custom_failure.rb 中的错误(第 15 行附近)
我关注了这个Devise Wiki Page
【问题讨论】:
标签: ruby-on-rails ruby redirect devise ruby-on-rails-5