对于jQuery DataTables的ajax函数和JSON响应,我在我的Rails 6应用程序中遇到了一个小问题。我成功地访问了路由并返回了JSON响应。
我想要实现的是:我每天统计具有特定属性的记录的数量,这样我就可以得到一个整数值。我的问题是:如何将此值传递给jQuery DataTables以显示在列中?
我的控制器操作:
def showDailyOrders
render json:
{ count1: OrderCard.where(day: Date.today).where(dish_type: 0).count }
end 初始化DataTable和AJAX请求的jQuery代码:
$("#todaysOrdersTable").DataTable({
ajax: '/showDailyOrders',
dataSrc: '',
columns: [
{ title: 'Vollkost', data: 'count1' }
]
});我得到的JSON响应如下所示:
"{\"count1\":1}"如何将值(在本例中为1)传递给jQuery函数?它只是告诉我“正在加载”,但什么也没发生。如果我使用另一个查询(如OrderCard.all )作为响应,并在函数中使用键(例如"id")作为数据,它将显示值。
谢谢你的帮助!
发布于 2019-12-04 23:41:07
dataSrc选项不存在,因此将被否定。请改用ajax.dataSrc选项:
$("#todaysOrdersTable").DataTable({
ajax: {
url: '/showDailyOrders',
dataSrc: ''
},
columns: [
{ title: 'Vollkost', data: 'count1' }
]
});修复dataSrc选项后,仍然存在返回值是单个值而不是数组的问题。当您返回OrderCard.all时,您将返回一个值数组,这就是它工作的原因。
这意味着我们必须将返回的单个对象{"count1":1}转换为包含对象[{"count1":1}]的数组。这可以在客户端完成,也可以在服务器端完成。在客户端,它应该看起来像这样:
$("#todaysOrdersTable").DataTable({
ajax: {
url: '/showDailyOrders',
dataSrc: obj => [obj], // transform into an array
},
columns: [
{ title: 'Vollkost', data: 'count1' }
]
});或者,如果您更愿意更改服务器端,它应该如下所示:
order_cards = OrderCard.where(day: Date.today).where(dish_type: 0)
# note that the object is now wrapped inside an array
render json: [{ count1: order_cards.count }]https://stackoverflow.com/questions/59178386
复制相似问题