2017-02-28 4 views
0

Ruby on Railsアプリケーションで、処理するJSスクリプトにcsv形式のデータをロードする必要があります。Railsでcsvファイルにアクセスするには

私のcsvファイルがapp/assetsであり、私のjsファイルは、私が使用してassets.rbで処理app/assets/javascriptsです:

$.ajax({ 
    url: "assets/mycsvfile.csv", 
    async: true, 
    success: function (csvd) { 
     // processing csv data 
     }, 
    error: function(e) { 
     var errorMsg = e? (e.status + ' ' + e.statusText) : ""; 
     console.log(errorMsg); 
     }, 
    dataType: "text" 
    }); 
:私はcsvファイルへのAJAX呼び出しを行う

myscript.js `で
Rails.application.config.assets.precompile += %w(myscript.js) 

私はまだ見られない

404ファイルを取得

どのようにしてそのCSVファイルを読み込むことができますか?

おかげ

+1

どのくらいの頻度でCSVファイルを変更していますか? *常にそれを変更しない限り、ブラウザーにすべての要求を処理させるのはかなり無駄です。サーバー上で一度だけ処理し、結果が変わったら保存してから、前処理したJSONをブラウザに送信してください。 –

+0

@ジョーダンありがとう、私はそれを試している –

答えて

1

あなたのRailsアプリの「公共」ディレクトリ内のファイルmycsvfile.csvを置きます。

次に、YOURDOMAIN/mycsvfile.csvリクエストから直接ロードすることができます。

EDIT:

あなたが公共のURLを使用したくないので、あなたは、ファイルのダウンロードを処理するためにHTTPサーバの認証やRailsのサーバーを使用するかがあります。

ファイルダウンロードを処理するRailsアプリでは、send_fileコマンドを使用します。 静的ファイルを提供する前に、コントローラの適切なユーザー権限を確認することができます。

例:

class ClientsController < ApplicationController 
    # Stream a file that has already been generated and stored on disk. 
    def download_pdf 
     client = Client.find(params[:id]) 
     send_file("#{Rails.root}/files/clients/#{client.id}.pdf", 
      filename: "#{client.name}.pdf", 
      type: "application/pdf") 
    end 
end 

出典:http://guides.rubyonrails.org/action_controller_overview.html#sending-files

+0

ありがとう、私はそのCSVファイルにURLからアクセスされたくないと言及するのを忘れていた –

+0

それはあなたがCSVファイルをURLからアクセスできるようにしたくないあなたのAjaxコールにどのように渡したいのですか? (あなたはファイルを一般にアクセスできないようにしたいのですか?URLのアプローチを拒否しますか?) –

+0

localhost:3000/assets/mycsvfile.csvのようにアクセスできないようにしてください。 –

関連する問題