可以将Google Map的Javascripts放入Asset管道(Rails)吗?

时间:2013-01-13 22:36:58

标签: javascript ruby-on-rails asset-pipeline

我添加了将谷歌地图加载到我的页面所需的JavaScript:

<% content_for :head do %>

<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=false">
</script>
<script type="text/javascript">
function initialize() {
    var mapOptions = {
        center: new google.maps.LatLng(<%=@lat%>, <%=@lon%>),
        zoom: 5,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        mapOptions);
}
</script>

<% end %>

你可以看到我需要在加载地图时传递参数纬度和经度。 正如我在标题中所说,我想将这些javascripts放入资产管道中,是否有可能如何?感谢

2 个答案:

答案 0 :(得分:13)

您不应在Google资源管道生成的application.js文件中包含Google Maps API。相反,它应该作为单独的<script>标记包含在 application.js的{​​{1}}标记之前。

然后,您可以将<script>方法添加到资产管道中包含的任何文件中,包括initialize()本身。

您可能希望对application.js方法提出@lat@lon个参数,但这些参数可以在您的网页initialize中定义。例如,你可能有

<head>

并在您的<head> <script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=false"></script> <%= javascript_include_tag "application" %> <script> var latitude = <%= @lat %>; var longitude = <%= @lon %>; </script> </head> 文件中可能有

application.js

答案 1 :(得分:0)

这并没有回答你的问题,但有一个谷歌地图宝石对我来说非常好用:https://github.com/apneadiving/Google-Maps-for-Rails