解决:我在ApplicationController中使用'clear_helpers'方法,因此阻止了Devise加载他的助手。
您好,
当我第一次在'开发'模式下运行我的应用程序时,我收到此错误,当我重新加载错误desapear。当我在'生产'上运行时,错误仍然存在,因为生产只加载应用程序一次(?),那么发生了什么?有人可以帮忙吗?
错误:
undefined method `user_signed_in?' for #<#<Class:0x10312ddc0>:0x103127100>
Extracted source (around line #16):
13:
14: #top
15: = link_to '', root_path, :id => 'logo'
16: - if user_signed_in?
17: #session
18: %p= raw "Olá <b>#{current_user.email}</b>"
19: #myaccount.button{:onclick => "javascript: document.location.href = '#{edit_user_registration_path}'"}
我正在使用Devise进行以下设置:
Rails:3.1,设计:1.3.4
我的模特:
class User::Account < ActiveRecord::Base
devise :database_authenticatable, :confirmable, :lockable, :recoverable,
:rememberable, :registerable, :trackable, :timeoutable, :validatable,
:token_authenticatable
end
路线:
Foco::Application.routes.draw do
devise_for :users, :class_name => 'User::Account'
root :to => 'main/cockpit#index', :constraints => lambda {|r| r.env["warden"].authenticate? }
devise_scope :user do
root :to => "devise/registrations#new"
end
end
我的控制器:
class Main::CockpitController < ApplicationController
before_filter :authenticate_user!
def index
end
end
谢谢!
答案 0 :(得分:1)
听起来您尝试调用的函数未定义。当您运行rails g devise User时,您将获得您尝试使用的功能,但是如果您使用非标准的东西,则需要使用它的单数版本。所以如果你运行rails g devise somethingnonstandard你会有函数somethingnonstandard_logged_in?等等。
答案 1 :(得分:1)
ApplicationController中的方法'clear_helpers'阻止Devise加载他的助手。
所以我删除了这个方法,应用就可以了。
答案 2 :(得分:1)
我收到了这个错误,因为我正在用我的设计路线做一些奇怪的事情。让它们正常解决它。