Rails 3.2:没有方法错误

时间:2012-05-26 22:33:20

标签: ruby-on-rails ruby-on-rails-3

我试图在我的导航按钮中显示当前用户名称,如果他们已登录..我不使用家庭控制器的任何东西,为什么要求在那里定义名称?尝试在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>

2 个答案:

答案 0 :(得分:1)

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

  <button class="btn"><Action> <%= current_user.name %> </button>

答案 1 :(得分:0)

我在stackoverflow中发现了这个其他线程,看起来也是同样的问题:

Devise: NoMethod Error & user_signed_in

您似乎在用户模型中缺少对设计的调用:database_authenticatable。