У меня есть remote: true
звонок в моем контроллере приложений Rails 3 HotelsController
, который выполняет show_map
действие. Довольно просто.Rails 3 рендеринг частично с javascript с удаленного: истинный вызов
<%= link_to "Map", show_hotel_map_path(@hotel.id), remote: true %>
<div id="hotel_map"></div>
show_hotel_map
действие довольно основной
show_hotel_map.js.erb
предназначен для визуализации частичного map
внутри диалогового окна JQuery-UI с оказанной карте Google Maps
$("#hotel_map").dialog({
autoOpen: true,
height: 'auto',
width: 'auto',
modal: true,
closeOnEscape: true,
position: 'center',
resizable: false,
title: "Map",
open: function(){
$("#hotel_map").html("<%= escape_javascript(render partial: "map") %>")
}
});
_map.html.erb
парциальное не делает ничего, кроме Исполняет render_map
помощник
<%= render_map %>
render_map
помощник делает все вещи с рендерингом карты с Gmaps4Rails
жемчужину
module HotelsHelper
def render_map
if @hotel.address.latitude && @hotel.address.longitude
map = @hotel.address.to_gmaps4rails
else
geo = Gmaps4rails.geocode("#{@hotel.continent.name}, #{@hotel.country.name}, #{@hotel.location.name}")[0]
map = [{lat: geo[:lat], lng: geo[:lng]}].to_json
end
gmaps(:markers => { :data => map, :options => { :draggable => true } })
end
end
Проблема заключается в том, что Gmaps4Rails
камня делает некоторые JavaScript для собственных Карт Google обработки, но, видимо, это Javascript усекается по escape_javascript
вызову от show_map.js.erb
вид. Поэтому, когда я нажимаю ссылку "Map"
, отображается диалоговое окно JQuery-UI, но у него нет никакой полезной нагрузки, поскольку Javascript не был выполнен. render_map
Помощник отлично работает сам по себе, поэтому я думаю, что это не проблема с камнем Gmaps4Rails
. Есть ли какие-либо обходные пути, чтобы я мог выполнить этот javascript? Я могу думать о немногих хаках, но, может быть, есть еще больше пути Rail-ish?
Спасибо!
представленное решение является абсурдным, см. Мою статью: https://gist.github.com/1643990 – apneadiving