2017-01-28 47 views
5

我尝试使用Devise for Rails应用程序。我可以注册和登录,但是当我去我的其他页面“构建”我收到以下错误:Helper Devise:根据请求环境找不到`Warden :: Proxy`实例

Devise::MissingWarden in Home#show Devise could not find the Warden::Proxy instance on your request environment. Make sure that your application is loading Devise and Warden as expected and that the Warden::Manager middleware is present in your middleware stack. If you are seeing this on one of your tests, ensure that your tests are either executing the Rails middleware stack or that your tests are using the Devise::Test::ControllerHelpers module to inject the request.env['warden'] object for you.

这里是我的控制器:

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 

这里REA我的两个部分观点:

<!-- views/devise/menu/_login_items.html.erb --> 
<% if user_signed_in? %> 
    <li> 
    <%= link_to('Logout', destroy_user_session_path, :method => :delete) %> 
    </li> 
<% else %> 
    <li> 
    <%= link_to('Login', new_user_session_path) %> 
    </li> 
<% end %> 

<!-- views/devise/menu/_registration_items.html.erb --> 
<% if user_signed_in? %> 
    <li> 
    <%= link_to('Edit registration', edit_user_registration_path) %> 
    </li> 
<% else %> 
    <li> 
    <%= link_to('Register', new_user_registration_path) %> 
    </li> 
<% end %> 

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

感谢您的帮助。

+0

这是在您本地运行应用程序或运行测试套件时发生的吗? –

回答

9

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

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

谢谢,不幸的是它不起作用。 – AlphaNico

+0

调试后,我发现问题来自我的“show”控制器中的这一行:template = HomeController.render('layouts/_template') – AlphaNico

相关问题