Я долго ломал голову над этим, будучи новичком как в JS, так и в Rails ... Я не мог сообразить, как преобразовать строку RASON jSON, созданную в моем контроллере, в массив JavaScript JSON-объектов.
Я попытался просто захватить строку, сгенерированную _to_gmaps4rails, но она была полна экранированных символов.Теперь я знаю, что это произошло из-за изменений в Rails, чтобы предотвратить вставку скриптов данными.
Я пробовал много вещей, таких как синтаксический анализ JSON на стороне браузера, индивидуальная передача элементов данных и т. Д.
Оказывается, все, что мне было нужно, это функция raw (), которая предотвращала экранирование строки.Вот мой рабочий код:
в моем контроллере:
@markers = plots.to_gmaps4rails do |plot, marker|
escaped_comment = ERB::Util.html_escape plot.comment
marker.infowindow render_to_string(:partial => 'my_partial', :locals => { :plot => plot})
marker.picture ( {
"picture" => ActionController::Base.helpers.asset_path(plot.marker) , # string, mandatory
"width" => 64, # integer, mandatory
"height" => 32, # integer, mandatory
})
marker.title plot.title
marker.json({ :id => plot.id, :comment => escaped_comment})
end
в моем JS (возвращено из вызова Ajax format.js):
markers = <%=raw(@markers)%>
Gmaps.map.replaceMarkers(markers)
Надеюсь, это кому-нибудь поможетеще!