Rails - Как убрать последнюю запятую в хэше - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть каждый:

{
  "type": "FeatureCollection",
  "features": [
   <% @pois.each do |poi| %>
   {
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [<%= poi.longitude %>, <%= poi.latitude %> ]
   },
 <% end %>
 ]
}

Я хочу удалить последнюю запятую для последней итерации. Как я могу это сделать?

Это не JSON, а Geojson.

У меня было бы что-то вроде этого:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
      "type": "Point",
      "coordinates": [2.484957, 44.6044089 ]
      },
      "properties": {}
    },
    {
      "type": "Feature",
      "geometry": {
      "type": "Point",
      "coordinates": [2.3749903, 44.5656783 ]
      },
     "properties": {}
    }
  ]
}

Все нормально, я просто хочу удалить последнюю запятую;)

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Поскольку вы, вероятно, заинтересованы в преобразовании массива в другой массив, вы можете использовать map вместо each, т.е.

{
  "type": "FeatureCollection",
  "features": 
   <% @pois.map do |poi| %>
     {
       "type": "Feature",
       "geometry": {
         "type": "Point",
         "coordinates": [<%= poi.longitude %>, <%= poi.latitude %> ]
       }
     }
   <% end %>
}
0 голосов
/ 29 апреля 2018

Полагаю, вы пытаетесь создать / отредактировать какой-либо объект JSON.

Вы не должны обрабатывать объекты JSON таким образом. Вместо этого используйте ActiveModel :: Serializer

С ActiveModel :: Сериализаторы

user = User.find(1)
user.as_json
# => { "id" => 1, "name" => "Konata Izumi", "age" => 16,
#     "created_at" => "2006/08/01", "awesome" => true}

ActiveRecord::Base.include_root_in_json = true

user.as_json
# => { "user" => { "id" => 1, "name" => "Konata Izumi", "age" => 16,
#                  "created_at" => "2006/08/01", "awesome" => true } }
...