undefined局部变量或方法`current_user'

时间:2013-12-01 06:12:27

标签: ruby-on-rails devise

我正按照teamtreehouse.com guide构建我的第一个Ruby on Rails应用程序(ruby 2.0.0p353)。

我正在使用设计3.2.2 devise并在application.html.erb中我想使用devise的“current_user”来显示登录用户的名称。

这里是我使用“current_user”的代码:

    <ul class="nav navbar-nav pull-right">
      <li><%= link_to current_user.first_name, "#" %></li> 
      <li><%= link_to "Log Out", destroy_user_session_path, method: :delete %></li> 
    </ul>

routes.db:

Treebook::Application.routes.draw do
   devise_for :t_busers
   resources :statuses
   root to: 'statuses#index'
end

但是,在运行我的应用程序时,我总是收到以下错误:

undefined local variable or method `current_user' for #<#<Class:0x007f98b1d0edb8>:0x007f98b1cff6d8>

我和其他设计方法有同样的错误。如果我已登录或未退出,我会收到错误消息。设计的注册,编辑等似乎工作正常。我试过把“before_filter:authenticate_user!”如设计文档中所示,进入application_controller.rb,但这也不起作用。

为了在视图中使用设计助手,我还需要做些什么吗?

2 个答案:

答案 0 :(得分:4)

从您的路线文件中,帮助应该是

current_t_buser

来自devise

的文档
  

请注意,如果您的设计模型不是“用户”而是“成员”,   那么你应该使用的助手是:

     

before_filter:authenticate_member!

     

member_signed_in?

     

current_member

     

member_session

答案 1 :(得分:1)

更改路线档案:

devise_for :t_busers

为:

devise_for :users

然后你应该可以使用current_user。这假设您有一个名为User的模型及其对应表users