我试图在我的导航按钮中显示当前用户名称,如果他们已登录..我不使用家庭控制器的任何东西,为什么要求在那里定义名称?尝试在nav ..中添加user.name时,任何涉及不同控制器的页面都会出错。
NoMethodError in Home#index
Showing /Users/nelsonkeating/Desktop/ReminDeal/app/views/layouts/_navigation.html.erb where line #10 raised:
undefined method `name' for nil:NilClass
Extracted source (around line #10):
7: <% if user_signed_in? %>
8: <div class="logout1">
9: <div class="btn-group">
10: <button class="btn"><Action> <%= @user.name %> </button>
11: <button class="btn dropdown-toggle" data-toggle="dropdown">
12: <span class="caret"></span>
13: </button>
<ul class="dropdown-menu">
<li><%= link_to 'Logout', destroy_user_session_path, :method=>'delete' %></li>
<li><%= link_to 'My Account', edit_user_path(current_user.id) %></li>
<li><%= link_to "Help", help_path %></li>
</ul>
</div>
</div>
</li>
答案 0 :(得分:1)
您是否在控制器中声明了@user? 尝试将第10行更改为:
<button class="btn"><Action> <%= current_user.name %> </button>
答案 1 :(得分:0)
我在stackoverflow中发现了这个其他线程,看起来也是同样的问题:
Devise: NoMethod Error & user_signed_in
您似乎在用户模型中缺少对设计的调用:database_authenticatable。