0

如果他们已登录,我试图在我的导航中的按钮中显示当前用户的名称。我不使用 Home 控制器做任何事情,为什么要求在其中定义名称?尝试在导航中呈现 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>
4

2 回答 2

1

您是否在控制器中声明了@user?尝试将第 10 行更改为:

  <button class="btn"><Action> <%= current_user.name %> </button>
于 2012-05-26T22:41:26.350 回答
0

我在stackoverflow中找到了这个另一个线程,它似乎是同样的问题:

设计:NoMethod 错误和 user_signed_in

您似乎错过了在您的用户模型中设计 :database_authenticable 的调用。

于 2012-05-26T23:21:27.540 回答