【问题标题】:undefined method `any?' for nil:NilClass未定义的方法“任何?”对于零:NilClass
【发布时间】:2014-07-21 00:39:03
【问题描述】:

这似乎是一个简单的问题,但我终其一生都无法确定问题所在。

提取来源:Show.Html.Erb

  <% if @jobs.any? %>

users_controller.rb

def show
    if current_user.role == 4
        @jobs = Job.where(jsender_id: current_user.id).order('created_at DESC')
    else
    end
end

我的 Jobs 表是空的,这让我首先假设 @jobs 被实例化为“Nil”,因为数据库中没有记录。我创建了一些记录,但仍然收到 No Method 错误。我在这里遗漏了什么吗?

Job.rb 衡量标准:

class Job < ActiveRecord::Base
   belongs_to :jsender, :class_name => 'User'
   belongs_to :jrecipient, :class_name => 'User'
end

【问题讨论】:

    标签: ruby-on-rails nomethoderror


    【解决方案1】:

    你只是在current_user.role == 4时设置@jobs,所以我们可以具体说current_user.role不是4。不可能。如果是,@jobs 不能为 nil,因为.where 不能返回 nil,如果没有匹配的记录,则返回一个空数组。

    我们无法进一步帮助您,只能告诉您弄清楚 current_user.role 的值是什么,以及为什么它不是您所期望的。

    【讨论】:

    • 非常感谢,它解决了我的问题。我之前在我的 user.rb 中使用角色表和 before_create :set_role 方法为数据库播种。它默认将我所有的角色设置为值 1。一个古老的提交的疏忽。再次感谢。
    猜你喜欢
    • 2017-02-20
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 2014-11-21
    相关资源
    最近更新 更多