我正按照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,但这也不起作用。
为了在视图中使用设计助手,我还需要做些什么吗?
答案 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
。