gpt4 book ai didi

ruby-on-rails - 顺序数组。数组的未定义方法 `order'。将数组转换为哈希?

转载 作者:行者123 更新时间:2023-12-04 06:04:59 30 4
gpt4 key购买 nike

我有一个城市模型,在城市的表演 Action 中,我想渲染城市中特定位置附近的酒店。城市有_许多地点;正在使用 Geocoder Near 方法搜索酒店。

为了添加订单功能,我关注了 Ryan Bates screencasts #228 ,但这种方法似乎不适用于数组,给出错误 undefined method `order' for #< Array:0x007f960d003430>

cities_controller.rb

helper_method :sort_column, :sort_direction
def show
session[:search_radius] = 2 if session[:search_radius].blank?
@city = City.find(params[:id])
@locations = @city.locations
@hotels = []
@locations.each do |location|
unless location.longitude.blank? || location.latitude.blank?
center_point = [location.latitude, location.longitude]
box = Geocoder::Calculations.bounding_box(center_point, session[:search_radius])
thotels = Hotel.near(center_point, session[:search_radius]).within_bounding_box(box)
else
thotels = Hotel.near(center_point, session[:search_radius])
end
@hotels += thotels if thotels
@hotels = @hotels.uniq
end
@hotels = @hotels.order(sort_column + " " + sort_direction).paginate(:page => params[:page], :per_page => 5)
@json = @locations.to_gmaps4rails

respond_with @json, :location => city_url
end


private

def sort_column
Hotel.column_names.include?(params[:sort]) ? params[:sort] : "name"
end

def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
end

我的问题是:我应该专注于将数组转换为散列还是应该最初创建酒店的散列,或者可能找到完全不同的方法来执行排序?

最佳答案

order是一种用于在数据库级别进行排序的方法。自 @hotels是一个数组,您将无法使用 order 进行排序.尝试以下操作(未测试,如果您尚未包含数组分页,则可能需要包含它)

@hotels = @hotels.sort_by(&:"#{sort_column}")
@hotels = @hotels.reverse if sort_direction == 'DESC'
@hotels = @hotels.paginate(:page => params[:page], :per_page => 5)

关于ruby-on-rails - 顺序数组。数组的未定义方法 `order'。将数组转换为哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15730432/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com