undefined 方法 'child_ids' for nil:NilClass,Rails



我正在尝试使用祖先GEM检索root类别 - 子类别。我在Rails控制台中尝试了此操作。它毫无问题地检索了Sub ID,但是当我在控制器(实际应用程序)中使用时,它显示了此类错误:

   Mysql2::Error: Operand should contain 1 column(s): SELECT COUNT(*) FROM `categories`  WHERE (id = 2,7,15,16)

控制器中的代码:

 @category = Category.find_by_name(params[:category])
 @sub_ids = @category.child_ids 
 @subcat = Category.where("id = ?", @sub_ids)  

谢谢((((((:

,)

很明显,没有提供名称的类别不存在(因此Category.find_by_name方法返回nil)。您可能无法正确设置@params实例变量。

关于您的第二个错误,代码中的最后一行应该是:

@subcat = Category.where(id: @sub_ids)

或更简单,您可以使用现有库来处理这种逻辑,例如ACTS_AS_TREE。

显然Category.find_by_name(@params)返回nil,因此在第一行中,您将nil分配给@category

@category = Category.find_by_name(@params) # => nil

然后在下一行上,您在nil上调用#child_ids方法(即nil.child_ids),当然未定义。

另外,如果@sub_ids是ID数组,则在您的最后一行中必须执行:

@subcat = Category.where(id: @sub_ids)

相关内容

  • 没有找到相关文章

最新更新