рельсы to_json не следующие скропы - PullRequest
0 голосов
/ 01 ноября 2010

Когда я просто использую метод to_json, кажется, что он игнорирует все остальные параметры ... есть идеи, как это исправить?

var places = <%=raw @location_for_map.limit(5).to_json(:only => [:name, :lat, :lng]) %>;

Я пытаюсь подключить точки из json на карте Google, но заметил, что точки никогда не уменьшались ни с одной из моих областей. где, порядок, лимит ...

Я мог бы поставить предел (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

1 Ответ

1 голос
/ 01 ноября 2010

Я не уверен, как to_json ведет себя с коллекциями, которые еще не были полностью перечислены.Вероятно, это ошибка, которая игнорирует ваши примененные области, но это может работать лучше:

@location_for_map.limit(5).all.to_json(:only => [:name, :lat, :lng])

@location_for_map.limit(5) на самом деле не возвращает массив;он возвращает объект, представляющий все примененные области, и на самом деле извлекает массив результатов только тогда, когда вы начинаете обрабатывать этот объект как массив.

Применение метода all заставляет Rails немедленно извлекать результатыи to_json, вероятно, лучше знает, как работать с массивом, чем с объектом-заполнителем.(Все мои догадки, но попробуем, несмотря ни на что.) Возможно, стоит посмотреть, есть ли еще отчет об ошибке и, если нет, подать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...