Я родственник noob, но мне было весело интегрировать gmaps4rails в моем проекте. Я столкнулся с проблемой, которая может быть ошибкой в драгоценности, или это может быть просто мое невежество, но я надеюсь, что кто-то может указать мне в правильном направлении.addMarkers (@marker) не работает для динамического содержимого
У меня есть домашняя страница, которая включает элемент ui jquery tab. На одной вкладке содержится список просмотров, а вторая вкладка - это вид карты этих рассказов. Я использую gmaps4rails в виде карты.
На странице перезагрузить все истории, соответствующие моим критериям поиска, отображаются в моем представлении списка и отображаются в виде карты, как ожидалось. Мои проблемы возникают, когда я пытаюсь использовать Gmaps.map.addMarkers().
Предположим, я добавляю новую историю, которая соответствует моим параметрам поиска. Мои истории # создать действие устанавливает @story переменного, как ожидалось, а затем я установить переменную @marker следующим образом:
@markers = @story.to_gmaps4rails
Тогда мой взгляд create.js.erb вставляет @story соответствующим образом на мой взгляд вкладок списка. К сожалению, Gmaps.map.addMarkers (@marker) не вставляет маркер в представление вкладки карты.
Вот некоторые более соответствующий код:
story.rb:
class Story < ActiveRecord::Base
acts_as_api
acts_as_gmappable :process_geocoding => false
def gmaps4rails_marker_picture
{
"rich_marker" => "<div class='story_marker' id=marker_for_story_#{self.id } ><img height='30' width='30' src='http://farm4.static.flickr.com/3212/3012579547_097e27ced9_m.jpg'/></div>"
}
end
create.js.erb:
$("#stories_list").prepend("<%=raw escape_javascript(render(@story)) %>"); //put new story in list view
<%= logger.debug("!!!!!!!!!! gmaps json array: #{@marker}")%>
Gmaps.map.addMarkers(@marker);
home.html.erb:
<div id="map-tab">
<%= yield :head %> <!-- for gmaps4rails -->
<%= gmaps("markers" => { "data" => @json, "options" => { "clusterer_gridSize" => 5, "clusterer_maxZoom" => 13 } }) %>
</div>
Когда я проверю консоль после вызова create.js.erb Я вижу, что @marker содержит информацию о правильном json-массиве. Я могу скопировать эту информацию прямо с консоли, а затем использовать консоль firebug для запуска addMarkers (скопированная информация о json-массиве), и маркер отображается, как ожидалось. Кроме того, я могу изменить команду addMarkers в файле create.js.erb, чтобы он выглядел следующим образом: Gmaps.map.addMarkers([{"lng": "<%[email protected]%>", "lat": "<%[email protected] %>"}]);
Но я предпочел бы использовать помощник to_gmaps4rails.
Спасибо за любую помощь, которую вы можете дать мне, чтобы решить эту тайну и счастливые праздники!
Я видел этот ответ и подумал, конечно. , , как глупо со мной. К сожалению, у меня все еще возникают проблемы с escape-символами, сгенерированными ответом, и надеюсь, что вы можете мне помочь. Если я использую ответ, мой пост-запрос возвращает всевозможные escape-символы в js (например, «Gmaps.map.addMarkers [{" описание ": ...»). Я приближаюсь, когда использую «Gmaps.map.addMarkers <% = raw escape_javascript @markers%>; ", но у меня все еще есть обратная косая черта в json. (например, Gmaps.map.addMarkers [{\ "description \":.....) Как я могу сделать это правильно? –
просто попробовал, а просто: '<% = raw @json%>' отображает действительный json. – apneadiving