我正在开发一个 Ruby on Rails 应用程序,我需要将一些 csv 格式的数据加载到 JS 脚本中进行处理。
我的csv文件位于app/assets
中,我的js文件是app/assets/javascripts
,我使用它在assets.rb
中处理:
Rails.application.config.assets.precompile += %w( myscript.js )
在 `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 file not found
如何加载该 csv 文件?
谢谢
最佳答案
将文件 mycsvfile.csv
放入 Rails 应用的“public”目录中。
然后,您将能够直接从 YOURDOMAIN/mycsvfile.csv
请求加载它。
编辑:
由于您不想使用公共(public) URL,因此必须使用 HTTP 服务器身份验证或 Rails Server 来处理文件下载。
要让 Rails 应用处理文件下载,请使用 send_file
命令。
在提供静态文件之前,您将能够在 Controller 中检查正确的用户权限。
示例:
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
关于javascript - 如何在 Rails 中访问 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42515249/