我有一個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
是爲了使jQuery的用戶界面對話框中的部分map
與渲染谷歌地圖地圖
$("#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進行適當的谷歌地圖的處理,但顯然這個JavaScript是由escape_javascript
通話截斷從show_map.js.erb
查看。所以當我點擊"Map"
鏈接時,JQuery-UI對話框正在呈現,但它沒有任何有效載荷,因爲沒有執行Javascript。 render_map
幫手本身完美的作品,所以我想這不是一個問題Gmaps4Rails
寶石。是否有任何解決方法,以便我可以執行該JavaScript?我可以想到一些黑客,但也許有更多Rail-ish的方式來做到這一點?
謝謝!
該解決方案呈現在那裏是荒謬的,請參閱我的要點:https://gist.github.com/1643990 – apneadiving