ruby-on-rails - 数据表(无分页)> 表单提交中缺少参数
问题描述
#3 编辑 => 找到原因!
所以我发现导致问题的原因是Datatable。即使我没有使用分页,Datatable 也会限制表单可以发布的行数。
jQuery('#tblStats').DataTable( {
dom: 'ft',
ordering: false,
jQueryUI: true,
scrollY: "400px",
deferRender: true,
scroller: true,
scrollCollapse: true,
language: {
search: "<%= t('app.bouton.filter') %>",
infoEmpty: "<%= t('app.datetables.sZeroRecords') %>"
}
});
关于如何避免该限制并继续使用 Datatable 的任何想法?
我已经尝试过了,但还是一样: https ://www.gyrocode.com/articles/jquery-datatables-how-to-submit-all-pages-form-data/
谢谢!
初始信息
我很难弄清楚为什么我在提交表单时缺少一些参数。
在表单内部有一个动态填充的表格。每行发送 10 个参数。提交适用于小数据,但似乎有 1898 个参数的限制。有时前 5 或 6 行的参数丢失,有时是最后一行的参数。这完全是随机的。但是限制似乎总是一样的:发送的参数不超过 1898 个。
我完全没有错误。只是不发送参数。这发生在生产服务器以及开发服务器中。服务器不同,操作系统也不同。
Rails 版本是 2.3.18。Ruby 版本是 1.8.7。
有谁知道发生了什么?
在此先感谢您的帮助!
#1 编辑
按照Oshanz的建议,我找到了乘客的配置文件。就我而言:
$>/home/alberto/.rvm/gems/ree-1.8.7-2012.02@dev/gems/passenger-4.0.37/resources/templates/standalone/config.erb
在该文件中,http{} 中有一个参数“client_max_body_size”。它的默认值为 1048m。即使这看起来足够大,我也将其更改为 2048m。
不幸的是,这不起作用,结果仍然相同。
#2 编辑
所以我仍然有这个问题。
正如我在下面评论的那样,我使用的是form_remote_tag
一个内部动态填充的表格。这将在后台使用 XMLHttpRequest 提交,而不是常规的重新加载 POST 安排。这会产生:
<form action="/wizi_comm/stats" method="post" onsubmit="Element.hide('err');Element.show('spinner');; new Ajax.Request('/wizi_comm/stats', {asynchronous:true, evalScripts:true, onComplete:function(request){Element.hide('spinner');Element.show('mainBd');}, parameters:Form.serialize(this)}); return false;">
我也测试过form_tag
,结果是一样的。有些参数只是没有发送。
<form action="stats" method="post">
我检查了乘客的配置文件,但没有运气。我确实需要一些想法:
您认为这是由于某处的配置造成的吗?
你认为我应该改变提交表格的方式吗?
在此先感谢您的帮助!
解决方案
解决方案
我使用基于 Datatable 的解决方案作为rows().data()进行了一些测试。我仍然缺少一些行。我也从 API 中得到了一些错误。
此时我认为项目中的其他 JS 库正在干扰 jQuery。当我有时间的时候,我会研究这个。
我最后做的是删除表格上的 Datatable 初始化,并使用纯 CSS 解决方案进行滚动。如果有人感兴趣,我的解决方案是基于此:
table.scroll {
width: 716px; /* 140px * 5 column + 16px scrollbar width */
border-spacing: 0;
border: 2px solid black;
}
table.scroll tbody,
table.scroll thead tr { display: block; }
table.scroll tbody {
height: 100px;
overflow-y: auto;
overflow-x: hidden;
}
table.scroll tbody td,
table.scroll thead th {
width: 140px;
border-right: 1px solid black;
}
table.scroll thead th:last-child {
width: 156px; /* 140px + 16px scrollbar width */
}
table.scroll thead tr th {
height: 30px;
line-height: 30px;
/*text-align: left;*/
}
table.scroll tbody { border-top: 2px solid black; }
table.scroll tbody td:last-child, thead th:last-child {
border-right: none !important;
}
再次感谢你的帮助 !
推荐阅读
- ios - 为私有 GitHub 存储库设置 Codecov
- reactjs - 如何在 React 中访问不同 reducer 的状态
- three.js - 将视频纹理一分为二
- html - 在列表标签中将圆盘对齐到中心
- yii2 - Yii2 为什么 PhpStorm 不自动完成单元测试方法
- c - 根据 fgetc(FILE*) 实现,我找不到 FILE 结构的 ungetcflag 成员
- git - 无法使用本地文件夹克隆 git repo
- azure - 使用 Azure AD 对本地(集成 Windows 身份验证)应用程序进行身份验证
- flutter - Flutter:ListView.builder 中的自动垂直高度
- hyperledger-fabric - 超级账本结构链代码:从链代码中调用另一个函数的函数?