Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在show.html.erb上动态更新javascript_include_标记_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 在show.html.erb上动态更新javascript_include_标记

Ruby on rails 在show.html.erb上动态更新javascript_include_标记,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,下面是一个场景: 我在数据库中有4个条目,它们是4条地图路线 每个地图路线都有自己的XML文件,其中包含每个路线的坐标,我编写了一个ajax函数,从XML中提取数据并将其写入google地图 这是代码的摘录 $.ajax({ type: 'GET', url: '/route4.gpx', dataType: 'xml', success: function(track) { var grids

下面是一个场景:

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

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

这是代码的摘录

$.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_标记以更新到相关的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_标记来实现这一点


感谢所有的帮助/建议/评论

为什么不插入

<%= 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" =%>

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

然后用该参数调用该函数。你有几个选择

您可以有一个脚本标记,在其中动态生成函数调用,即按照

 $(function(){
   my_function(<%= @url.to_json %>)
 })
您可以让函数调用成为静态javascript的一部分,但让它从相关DOM元素的数据属性中提取其参数

 $(function(){
   my_function($('some_element').data('url'))
 })
我通常会选择后者

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