用于nil的未定义方法`email':NilClass(在下面的代码中是必需的电子邮件)

时间:2016-10-13 12:15:56

标签: ruby-on-rails

当我运行rails服务器时,这是在localhost:3000的错误屏幕上。

enter image description here

2 个答案:

答案 0 :(得分:0)

  

控制器过滤器和助手

Devise将创建一些帮助程序,以便在控制器和视图中使用。要设置具有用户身份验证的控制器,只需添加此before_action(假设您的设计模型' User'):

before_action :authenticate_user!
  

对于Rails 5

请注意,protect_from_forgery不再附加before_action,因此如果您在authenticate_user之前设置了protect_from_forgery,则您的请求将导致&#34; < strong>无法验证CSRF令牌的真实性。&#34;要解决此问题,请更改调用它们的顺序,或使用protect_from_forgery prepend:true。

Reference

答案 1 :(得分:0)

检查user signed in是否然后添加以下链接:

如果您使用的是devise

<% if user_signed_in? %>
  <ul class="nav">
    <li><%= link_to current_user.email, "#" %></li>
  </ul>
<% end %>

如果您不使用devise,请检查:

<% if current_user %>
  <ul class="nav">
    <li><%= link_to current_user.email, "#" %></li>
  </ul>
<% end %>