我的应用程序中的导航栏有以下代码,使用Devise进行用户身份验证。
<ul class="nav pull-right">
<li class="">
<%= link_to root_path do %>
<i class="icon-home"></i> Home
<% end %>
</li>
<li class="">
<%= link_to current_user do %>
<i class="icon-book"></i> Portfolio
<% end %>
</li>
<li class="">
<%= link_to help_path do %>
<i class="icon-question-sign"></i> Help
<% end %>
</li>
<li class="">
<%= link_to(destroy_user_session_path, :method=>'delete') do %>
<i class="icon-signout"></i> Logout
<% end %>
</li>
</ul>
它在主页和用户配置文件页面上工作正常,但是当我转到其他页面时,例如项目或帮助页面(两者都在其控制器中有before_filter :authenticate_user!
),它会抛出跟随错误
NoMethodError in Projects#index
undefined method `find_by_remember_token' for #<Class:0x3ec18d0>
它说违规代码是这部分:
<%= link_to current_user do %>
我用它将用户链接到他/她的个人资料。任何想法如何解决这个错误?
更新: 添加
后,似乎问题就解决了 @user = current_user
到页面的各个控制器。
答案 0 :(得分:0)
尝试检查用户是否已登录。
<%= link_to if_user_signed_in?, current_user %>