所以这是场景:
我在数据库中有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文件将是&#34; /js/script1.js"
当链接到show / 2时,javascript文件将是&#34; /js/script2.js"
当链接到show / 3时,javascript文件将是&#34; /js/script3.js"
当链接到show / 4时,javascript文件将是&#34; /js/script4.js"
那么无论如何都要写入javascript_include_tag来实现这个目标吗?
所有帮助/建议/意见赞赏
答案 0 :(得分: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元素的data属性中拉出它的参数
$(function(){
my_function($('some_element').data('url'))
})
我通常会选择后者
答案 1 :(得分: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" =%>