当我只是to_json方法时,它似乎忽略了所有其他选项...任何想法如何解决这个问题?
var places = <%=raw @location_for_map.limit(5).to_json(:only => [:name, :lat, :lng]) %>;
我正试图在谷歌地图上插入json的积分,但注意到我的任何一个示波器的积分都不会变小。在哪里,订购,限制......
我可以设置一个限制(5),无论如何它仍会返回1000条记录。
控制器看起来像这样:
sort = case params[:sort]
when "name" then session[:sort] = "name"
when "min_price" then session[:sort] = "min"
when "avg_price" then session[:sort] = "cache_price"
when "rating" then session[:sort] = "cache_rating DESC NULLS LAST"
end
@locations = Location.find(params[:id])
@base = @locations.places.active
#@location_for_map = @locations.places.limit(5)
unless params[:tags].blank?
@base = @base.tagged_with(params[:tags])
end
unless params[:price_high].blank?
price_high = (params[:price_high].to_f * Currency.rate(params[:currency]))
price_low = (params[:price_low].to_f * Currency.rate(params[:currency]))
@base = @base.where("cache_price BETWEEN ? AND ?",price_low,price_high)
end
@base = @base.order(session[:sort])
#@location = @locations.places.active.paginate :page => params[:page]
@location = @base.paginate :page => params[:page]
@location_for_map = @base
答案 0 :(得分:1)
我不确定to_json
对尚未完全枚举的集合的行为如何。它可能是一个忽略你的应用范围的错误,但这可能会更好:
@location_for_map.limit(5).all.to_json(:only => [:name, :lat, :lng])
@location_for_map.limit(5)
实际上并不返回数组;它返回一个对象,该对象表示到目前为止应用的所有范围,并且只有在开始像处理数组一样处理该对象时才实际获取结果数组。
应用all
方法强制Rails立即获取结果,而to_json
可能更好地了解如何使用实际数组而不是占位符对象。 (我的全部猜测,不管怎样,不管怎么说。)如果还有错误报告,可能值得一看,如果没有,请提交一份。