0

したがって、シナリオは次のとおりです。

データベースには 4 つのエントリがあり、それらは 4 つのマップ ルートです。

各マップルートには、各ルートの座標を含む独自の XML ファイルがあります。xml からデータを取得して Google マップに書き込む ajax 関数を作成しました。

これはコードからの抜粋です

$.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 に渡された文字列を補間したり、インスタンス変数として渡したりすることはできますが、間違った道を進んでいると思います。ajaxリクエストを行うためのURLをパラメーターとして受け取る単一のjavascript関数があります。

次に、そのパラメーターを使用してその関数を呼び出します。ここにはいくつかの選択肢があります。

関数呼び出しを動的に生成するスクリプトタグを使用できます。つまり、次の行に沿って何かを行います。

 $(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'))
 })

私は通常、後者のために行きます

于 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 に答える