我正在使用“Devise”,我想在学生仪表板中调用current_user.email。但我继续为nil:NilClass错误获取相同的“未定义方法`email'。
学生/ index.html.erb
<div class="student-index-header">
<br><%= current_user.email %></br>
<div class="student-index-header-text">
<a class="student-index-header-text-sign-out" href="<%= destroy_user_session_path %>">Sign-out</a>
</div>
</div>
student.rb
class Student < ApplicationRecord
belongs_to :user, optional: true
validates_presence_of :first_name, :last_name , :age, :description
end
user.rb
class User < ApplicationRecord
has_one :tutor
has_one :student
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
答案 0 :(得分:0)
如果您的用户未登录,则设计为current_user
返回 nil 。
试试这个:
<%= current_user.email if user_signed_in? %>
如果页面要求用户登录,您还应该将此行添加到控制器中(这会使if子句成为冗余,因为我们已经检查过用户是否已登录控制器) :
authenticate_user! unless user_signed_in?
您也可能希望在用户登录后将其重定向回此页面。要了解如何操作,请查看this answer.