2012-06-29 3 views
0

У меня есть 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?

Спасибо!

ответ

0

Хорошо, кому это может касаться, я решил его с помощью методики, описанной в UJS Gmaps4Rails вики

https://github.com/apneadiving/Google-Maps-for-Rails/wiki/Using-with-UJS

Это не очень сухой, но я предполагаю, что есть не так много других вариантов.

+1

представленное решение является абсурдным, см. Мою статью: https://gist.github.com/1643990 – apneadiving

Смежные вопросы