我被这个难住了:
我正在尝试对控制器中的数组进行排序,如下所示:
控制器
@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>
令人困惑的是,当我在控制器中执行此操作时:
@sorted = @search.sort! { |x, y| y.reviews.count <=> x.reviews.count }
它工作正常。
我究竟做错了什么?
- -更新
我的完整控制器代码:
@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>