Ruby on Rails Ganerate Json - PullRequest
       1

Ruby on Rails Ganerate Json

0 голосов
/ 27 мая 2018

У меня есть контроллер, который генерирует Json.Я использую этот Json для отображения записей в Картах Google, но я хочу показать, что только те, у кого есть параметр toll=="true", а те, у кого его нет, не будут отображаться.

Я собираюсь сделатьэтот фильтр непосредственно в Json (через сгенерированный URL), и когда я вызываю его через javascript, я вызываю URL с нужным мне параметром.Как я могу получить доступ через URL только те, которые имеют параметр toll=="true"?пример: localhost:3000/map_pis?tool=="true"?:

class PointOfInterestsController < ApplicationController
  def map
    pis = PointOfInterest.all
    fares = FareCity.all
    msg = '
      {
        "pis": [
          '
    total_pis = ''
    pis.each do |p|
      total_pis += '
     {"kilometer": ' + p.kilometer.to_s + ',
      "category": "pis",
      "name": "' + p.name + '",
      "show_on_map": "' + p.point_of_interest_category.show_on_map.to_s + '",
      "lat": ' + p.lat.to_s + ',
      "lng": ' + p.lng.to_s + ',
      "icon": "' + p.point_of_interest_category.icon.url + '",
      "description": "' + p.description + '",
      "image": "' + p.image.url + '"},'
    end

    fares.each do |f|
      total_pis += '
     {"kilometer": ' + f.kilometer.to_s + ',
      "category": "fare",
      "name": "' + f.name + '",
      "toll": "' + f.is_toll.to_s + '",
      "lat": ' + f.lat.to_s + ',
      "lng": ' + f.lng.to_s + ',
      "icon": "/img/icon_fare_map.png",
        "pedagios": ['
    total_fares = ''

    f.fare_pricings.each do |fp|
      total_fares += '
      {"title": "' + fp.fare_category.title.to_s + '",
      "price": ' + fp.price.to_s + '},'
    end

    total_pis += total_fares[0...-1]

    total_pis += '] },'
    end

    msg += total_pis[0...-1]

    msg +='
        ]
      }
    '
    render :json => msg
  end
end

Спасибо.

1 Ответ

0 голосов
/ 27 мая 2018

Предполагая, что вы называете toll=="true" ссылкой на атрибут is_toll (true / false) вашей FareCity модели, вы можете сделать условное отображение непосредственно внутри контроллера:

def map
  pis = PointOfInterest.all
  fares = FareCity.where(is_toll: true)
  #...
end

Какв нем говорится, что в json будут отображаться только тарифы, в которых is_toll истинно.

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