我有一个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