Ruby / Rails - Pages#home中的NoMethodError - 部分视图

时间:2016-09-29 01:44:51

标签: ruby-on-rails variables model-view-controller methods variable-assignment

错误: Pages#home中的 NoMethodError(强调文​​本未定义方法`profile'代表nil:NilClass

enter image description here

控制器: 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

1 个答案:

答案 0 :(得分:1)

问题是@usernil,您无法在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 %>