【发布时间】:2015-08-01 18:26:10
【问题描述】:
我有一些使用 Ancestry gem 为 Rails 3 构建的类别树 我能够在控制台和其他控制器之间使用所有 Ancestry 方法。 但是现在我在使用 root 之类的方法时遇到了问题?和 is_root?判断选中的猫是否为根类。
我在应用程序控制器中的代码
private
def set_categories
def set_ids
case action_name
when "index"
@origin_cat = Category.find_by_name(params[:category])
if @origin_cat.root?
@descendant_ids = @origin_cat.descendant_ids
@descendant_prods = Product.where(:category_id => @descendant_ids ).paginate(:per_page=>10, :page=> params[:page])
else
end
......
我的错误看起来像这样:
undefined method `root?' for nil:NilClass
【问题讨论】:
-
先做
p params看:category这个键有没有值。 -
Category.find_by_name(params[:category])没有结果。 -
您拨打
.root?没有任何问题;问题是@origin_cat为零,因为查找失败。你应该检查params[:category]的值
标签: ruby-on-rails ruby ancestry