Helper Devise:在请求环境中找不到`Warden :: Proxy`实例

我尝试将Devise用于我的Rails应用程序。 我可以注册并登录但是当我转到我的其他页面“构建”时,我收到以下错误:

Devise :: MissingWarden in Home#show Devise在您的请求环境中找不到Warden::Proxy实例。 确保您的应用程序正在按预期加载Devise和Warden,并且Warden::Manager中间件存在于您的中间件堆栈中。 如果您在某个测试中看到这一点,请确保您的测试要么正在执行Rails中间件堆栈,要么您的测试正在使用Devise::Test::ControllerHelpers模块来注入request.env['warden']对象您。

这是我的控制器:

 class ApplicationController < ActionController::Base protect_from_forgery with: :exception private # Overwriting the sign_out redirect path method def after_sign_out_path_for(resource_or_scope) build_path end end 

这是我的两个部分观点:

   
  • :delete) %>
  •    
  • 调试之后,我发现问题来自我的“show”控制器中的这一行:template = HomeController.render(’layouts / _template’)

    谢谢你的帮助。

    基于此SO 答案,您需要在控制器规范中包含Devise::Test::ControllerHelpers模块。 将以下内容添加到rails_helper:

     RSpec.configure do |config| config.include Devise::Test::ControllerHelpers, type: :controller end 

    我有这个错误,在其他任何地方找不到答案。 它是在删除并创建数据库之后。 但我没有加载架构。

    这解决了它:

     rake db:drop db:create db:schema:load 

     config.include Devise::Test::ControllerHelpers, type: :controller 

    在你的rails_helper.rb文件中。

    好吧,我遇到了同样的问题“设计无法在actioncable中找到warden :: proxy”它可以通过将当前user_id传递给你的作业中的perform方法来解决,因为你可能正在访问你视图中的当前用户通过广播呈现并由于此问题而导致