0

所以这里是场景:

我在数据库中有 4 个条目,它们是 4 条地图路线。

每条地图路线都有自己的 XML 文件,其中包含每条路线的坐标,我编写了一个 ajax 函数来从 xml 中提取数据并将其写入谷歌地图

这是代码的摘录

$.ajax({                  
 type: 'GET',
 url: '/route4.gpx',            
 dataType: 'xml',             
 success: function(track) {
   var grids = [];         
   var bounds = new google.maps.LatLngBounds ();  
   $(track).find('trkpt').each(function() {       
     var lat = $(this).attr('lat');            
     var lon = $(this).attr('lon');
     var point = new google.maps.LatLng(lat, lon);    
     grids.push(point);                              
     bounds.extend(point);

我将此代码保存到 4 个 javascript 文件中,每个文件的 URL 行不同(route1.gpx、route2.gpx 等)

我想要做的是在 show.html.erb 文件上更改 javascript_include_tag 以更新到相关的 javascript 文件

所以 show.html.erb 标签如下所示

<%= javascript_include_tag  "http://maps.google.com/maps/api/js?sensor=false" ,"http://code.jquery.com/jquery-1.9.1.min.js", "/js/script1.js" =%>

当我访问不同的页面时,我想要更改的最后一个参考,所以

当链接到 show/1 时,javascript 文件将是“/js/script1.js”

当链接到 show/2 时,javascript 文件将是“/js/script2.js”

当链接到 show/3 时,javascript 文件将是“/js/script3.js”

当链接到 show/4 时,javascript 文件将是“/js/script4.js”

那么无论如何要写入 javascript_include_tag 来实现这一点?

赞赏所有帮助/建议/评论

4

2 回答 2

1

您可以插入传递给 javascript_include_tag 的字符串,将其作为实例变量传递等,但我认为您走错了路。我将有一个 javascript 函数,它将 url 作为参数发出 ajax 请求。

然后,您将使用该参数调用该函数。你在这里有几个选择。

您可以有一个脚本标签,您可以在其中动态生成函数调用,即您可以按照以下方式进行操作

 $(function(){
   my_function(<%= @url.to_json %>)
 })

您可以有一个脚本标记,您可以在其中使用 url 设置窗口属性并稍后使用它:

 window.map_url = <%= @url.to_json %>

然后在别的地方

 $(function(){
   my_function(window.map_url)
 })

您可以让函数调用成为静态 javascript 的一部分,但让它从某些相关 DOM 元素的数据属性中提取其参数

 $(function(){
   my_function($('some_element').data('url'))
 })

我通常会选择后者

于 2013-05-01T11:21:20.033 回答
0

你为什么不插值?

<%= javascript_include_tag  "http://maps.google.com/maps/api/js?sensor=false" ,"http://code.jquery.com/jquery-1.9.1.min.js", "/js/script#{controller_variable_for_example_id}.js" =%>
于 2013-05-01T11:02:20.490 回答