未定义的方法`user_signed_in?' - 设计

时间:2011-05-19 05:26:12

标签: ruby-on-rails devise ruby-on-rails-3.1

解决:我在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

谢谢!

3 个答案:

答案 0 :(得分:1)

听起来您尝试调用的函数未定义。当您运行rails g devise User时,您将获得您尝试使用的功能,但是如果您使用非标准的东西,则需要使用它的单数版本。所以如果你运行rails g devise somethingnonstandard你会有函数somethingnonstandard_logged_in?等等。

答案 1 :(得分:1)

ApplicationController中的方法'clear_helpers'阻止Devise加载他的助手。

所以我删除了这个方法,应用就可以了。

答案 2 :(得分:1)

我收到了这个错误,因为我正在用我的设计路线做一些奇怪的事情。让它们正常解决它。