Как поместить данные рельсов в массив javascrip - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть коллекция данных, поступающих из rails db, но я хочу преобразовать ее в массив js.

Массив ниже является статическим, поэтому я хочу взять значения широты и долготы из моих railsприложение и преобразовать его в массив, как показано ниже.

var locations = [
        {lat: -31.563910, lng: 147.154312},
        {lat: -33.718234, lng: 150.363181},
        {lat: -33.727111, lng: 150.371124},
        {lat: -33.848588, lng: 151.209834},
        {lat: -33.851702, lng: 151.216968},]

Я пытался:

var locations = <%= raw @locations.to_json %>;

Но это приносит даже то, что мне не нужно!

Ответы [ 3 ]

0 голосов
/ 09 ноября 2019

в каком формате поступают данные из БД? JSON? В этом случае вы должны:

var locations = JSON.parse( <%= raw @locations.to_json %> );
0 голосов
/ 09 ноября 2019

Требуется ли создавать массив объектов JS из коллекции?

Для этого вы также можете использовать JSON-библиотеки OpenStruct.

require 'JSON'
arr = JSON.parse(@locations.to_json, object_class: OpenStruct)

Затем вы можете управлять массивом как объектом JS.

Если вы хотите построить массив JS, вы можете использовать что-то вроде решения Rockwells

var locations = []
<% @locations.each do |loc| %>
  locations.push({lat: "<%= loc.lat %>", lng: "<%= loc.lang %>"});
<% end %>
0 голосов
/ 09 ноября 2019

Это результат, который вы ищете?

<% count = @locations.count %>
var locations = [
  <% @locations.each_with_index do |loc, idx| %>
    {<%= loc.lat %>, <%= loc.lang %>}<% unless idx + 1 == count %>,<% end %>
  <% end %>
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...