2017-02-13 3 views
0

私はRuby on Railsを使ってユーザーが選択したスクリプトを実行するプロジェクトのWebページを作成しています。 。各結果要素は、結果を含むブートストラップ縮小可能なプレゼンテーション領域で構成されます。私は各プレゼンテーションブロックの一番下にダウンロードリンクを実装しています。プレゼンテーションブロックは、ダウンロードする.txtファイルとしてすべてのテキストを保存します。私はこれを達成するためにJavaScriptブロブを使用していますが、問題にぶつかっています。私はデータをダウンロードするために無数のリンクを持たなければならないが、新しいリンクが作られるたびに前のリンクがダウンロードのために機能しなくなる。私は、BLOBリンクを配列に保存し、そこから結果のリンクを返すことを試みましたが、無駄です。静的なRails Web UI上の複数の独立したBLOBリンク

var textFile = null, 
makeTextFile = function(text){ 
    data = new Blob([text], {type: 'text/plain'}); 

    if(textFile !== null) { window.URL.revokeObjectURL(textFile); } 
    textFile = window.URL.createObjectURL(data); 
    return textFile; 
}; 

私はRailsの上で「send_fileを」ルビーを使用してダウンロードを扱うことができるが、それは他のすべての結果を失うことになるリロードするWebページを要求する次のようにブロブを構築する機能があります。う、誰もが静的なWebページ上のブロブで作られた複数のダウンロードリンクを扱うの経験を持っている場合

if(document.getElementById("dig").checked == true) 
{ 
    $('#dig_wait_img').addClass('hidden'); 
    $('#dig_loading_img').removeClass('hidden'); 
    results = $.ajax({ 
    type:"POST", 
    url: "/console/discovery/dig", 
    data: { domain_name : domainInput }, 
    success: function(data) { 
     resultArr.push(data["value"]); 
     $('#dig_loading_img').addClass('hidden'); 
     $('#dig_check_img').removeClass('hidden'); 
     $("#results") 
     .append(
     $("<div class=\"panel panel-default\">") 
     .append(
      $("<h4 class=\"panel-title\">") 
      .append(
      $("<a data-toggle=\"collapse\" href=\"#collapse" + count + "\">DIG - " + domainInput + "</a>") 
     ) 
     ) 
     .append(
      $("</h4>") 
     ) 
     .append(
      $("</div>") 
     ) 
     .append(
      $("<div id=\"collapse" + count + "\" class=\"panel-collapse collapse\">") 
      .append(
      $("<pre><div class=\"panel-body\" id=\"body" + count + "\">" + data["value"] + "</div><a id=\"" + count + "\" href=\"" + makeTextFile(data["value"]) + "\" download=\"" + data["file"] + "\">Download</a><div class=\"panel-footer\"></div></pre>") 
     ) 
     ) 
     .append(
      $("</div>") 
     ) 
     .append(
      $("</div>") 
     ) 
    ); 
     count++; 
    }, 
    error: function(data) 
    { 
     $('#dig_loading_img').addClass('hidden'); 
     $('#dig_x_img').removeClass('hidden'); 
    }, 
    }); 
} 

、またはあなただけの一般的な提案があれば、任意のヘルプ:次のように結果要素を構築するコードです感謝する。先にありがとう

答えて

0

ああ、疲れている喜び...一歩踏み出した後、私が問題に近づいているとは思えないかもしれないが、私が前提としたことが必要だった。実際の問題は、BLOBリンクをどのように保存しようとしていたのか、textFile変数がnullにリセットされていないこと、ファイルがnullでないかどうかをチェックしてリンクが破棄されているかどうかを調べます。 makeTextFile関数でif文を削除すると、問題は解決しました!

関連する問題