Как перебрать этот код Ruby, чтобы я мог динамически отображать маркеры на карте? - PullRequest
0 голосов
/ 12 июня 2018

Я создаю приложение для поиска магазинов и пытаюсь заполнить карту маркерами, которые представляют магазины в моей базе данных.Я использовал гем Geocoder для преобразования адресов в широту и долготу, и я использую Leaflet.js и гем leaflet-rails (в основном, следуя этому уроку: https://github.com/axyjo/leaflet-rails). Мне удалось показать карту смаркеры со следующим кодом:

<% @stores.each do |store| %>
    <h2><%= link_to store.name, store_path(store) + ': ' + store.address %></h2>
<% end %>

<%= link_to "Add Spaeti", new_store_path %>

<%= map(:center => {
    :latlng => [52.52004797921441, 12.4050235665359283],
    :zoom => 3
  },

  :markers => [
    {  
       :latlng => [ Store.last.latitude, Store.last.longitude ],
       :popup => Store.last.name
    }
  ]
) %>

Проблема, с которой я сталкиваюсь, заключается в том, чтобы маркеры динамически появлялись из данных в моей базе данных. Я относительно новичок в Ruby и в Rails, так что это довольно сложноДолжен ли я перебирать значения lat и lng с каждым методом? Я пытался это сделать, но получал много синтаксических ошибок. Я даже не уверен, в какой форме находится последняя часть кода.вложенный хеш?

1 Ответ

0 голосов
/ 12 июня 2018

markers: Store.all.map { |store| {latlng: [store.latitude,store.longitude], popup: store.name}. - ваш ошибочный код.

Я думаю, что ваша идея верна, но вы пропустили закрывающую } для блока карты.Попробуйте:

markers: Store.all.map { |store| { latlng: [store.latitude, store.longitude], popup: store.name } }

Что касается структуры данных, то похоже, что метод карты ожидает хеш (объект), где ключ маркера, который должен содержать массив хеш-объектов маркера (объекты)у каждого из которых есть атрибут latlng и popup.Атрибут latlng должен содержать массив значений широты и долготы, а атрибут popup должен содержать строку данных, необходимых для помещения во всплывающее окно.

...