【发布时间】:2019-06-26 05:14:00
【问题描述】:
我正在使用 Rails 和 jQuery Datatables 插件,我试图在视图中显示来自 CSV 的数据。列数和行数因文件而异,仅依靠视图非常适合较小的文件,但任何较大的文件显然需要一段时间才能加载页面以及随后加载 jQuery 插件(我需要分页功能)。因此,我已更改为尝试通过其 ajax/serverSide 呈现功能将 td 值传递给 Datatables。我目前正在处理的问题是我不断收到“未捕获的类型错误:无法读取未定义的属性'长度'”的响应。
我目前正在使用此代码来解析 CSV 文件并从控制器发送:
json_hash = CSV.parse(csv_file, headers: true)
json_hash = JSON.pretty_generate(json_hash.drop(1).map(&:to_h), {object_nl: '', indent: ' '})
respond_to do |format|
format.csv {send_data csv_file, filename: scenario+".csv"}
format.json { render json: json_hash }
end
这是我设置数据表的方式:
var scene = $("#data-table-id").val();
var table = $('#data-viz-table').DataTable({
searching: false,
bServerSide: true,
deferRender: true,
scrollCollapse: true,
bProcessing: true,
sAjaxSource: '/data_model/export_csv/' + scene,
order: [],
"columnDefs": [
{ "orderable": false, "targets": "_all" }
]
});
我已经在网络选项卡中检查了响应,以及控制台记录数据,就格式而言,一切至少“看起来不错”,但我完全不知道我需要做什么才能获得要在 tbody 元素中显示的 td 项。
任何帮助将不胜感激。谢谢。
【问题讨论】:
标签: ruby-on-rails json ruby csv datatables