错误: Pages#home中的 NoMethodError(强调文本未定义方法`profile'代表nil:NilClass )
控制器: pages_controller.rb
class PagesController < ApplicationController
before_action :authenticate_user!, except: [:landing, :home, :plan]
def home
@contributor_plan = Plan.find(1)
@elitecontributor_plan = Plan.find(2)
@technician_plan = Plan.find(3)
@elitetechnician_plan = Plan.find(4)
@center_plan = Plan.find(5)
@elitecenter_plan = Plan.find(6)
@affair_plan = Plan.find(7)
@eliteaffair_plan = Plan.find(8)
end
答案 0 :(得分:1)
问题是@user
是nil
,您无法在profile
对象上调用nil
方法。
仔细观察,before_filter
before_action :authenticate_user!, except: [:landing, :home, :plan]
没有为authenticate_user!
操作调用home
方法(在except
中指定)。因此,您实际上无法访问当前登录的用户。
因此,您必须对home
操作的用户进行身份验证。将您的before_filter
修改为
before_action :authenticate_user!, except: [:landing, :plan]
此外,设计公开了一个名为current_user
的方法,您可以使用该方法找到当前登录的用户。因此,您的观点应使用current_user
而不是@user
。
<%= image_tag current_user.profile.avatar.url %>