如何在Rails中访问csv文件

时间:2017-02-28 17:32:32

标签: javascript ruby-on-rails ruby csv

我正在使用Ruby on Rails应用程序,我需要将一些csv格式的数据加载到JS脚本中进行处理。

我的csv文件位于app/assets,而我的js文件是app/assets/javascripts,我使用以下代码assets.rb处理:

Rails.application.config.assets.precompile += %w( myscript.js ) 
我对csv文件进行了ajax调用:

$.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"
    });

我还是

  找不到404文件

如何加载该csv文件?

由于

1 个答案:

答案 0 :(得分:1)

将文件mycsvfile.csv放在Rails应用程序的“public”目录中。

然后,您可以直接从YOURDOMAIN/mycsvfile.csv请求加载它。

编辑:

由于您不想使用公共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