<分区>
我被这个难住了:
我正在尝试像这样在我的 Controller 中对数组进行排序:
Controller
@sorted = sort_by_reviews(@search, "count")
型号
def self.sort_by_reviews(array, type)
if type == "count"
array.sort! { |x, y| y.reviews.count <=> x.reviews.count }
else
array.sort! { |x, y| y.reviews.average.to_f <=> x.reviews.average.to_f }
end
结束
但是,我收到了这个错误:
undefined method `sort_by_reviews' for #<BuildingsController:0x007f80d89be320>
令人困惑的是,当我在 Controller 中执行此操作时:
@sorted = @search.sort! { |x, y| y.reviews.count <=> x.reviews.count }
它工作正常。
我做错了什么?
---更新
我的完整 Controller 代码:
@search = Model.search_attributes(params[:search])
@sorted = @search.sort_by_reviews "count"
我调整后的模型方法:
def sort_by_reviews(type)
if type == "count"
self.sort! { |x, y| y.reviews.count <=> x.reviews.count }
else
self.sort! { |x, y| y.reviews.average.to_f <=> x.reviews.average.to_f }
end
end
我仍然得到同样的错误:
undefined method `sort_by_reviews' for #<Array:0x007f80d423ee50>