如何解决为什么datatables.net可以在我的Rails开发环境中工作,而在部署到heroku时却不能工作?
对于我的第一个Rails 6项目,我尝试结合使用datatables(jQuery插件)和Bootstrap 5,以便对每个HTML表格进行精美的表格排序。
在我的Rails开发环境中,它可以很好地工作,但是在将其推送到Heroku应用程序后,datatables组件似乎无法正常工作:我从数据库中看到了所有行,但是无法单击列标题进行排序和搜索栏不见了。由于某些原因,它无法正确加载/激活数据表组件。
我一直在寻找SO和Internet的线索,但似乎无法找到解决方案。
我尝试过的没有结果的东西:
- 切换
config.assets.compile
中的production.rb
选项以强制Heroku预编译资产 - 在
application.js
中重新排列了需求列表 - 使用
application.js
个类似SO问题/答案的内容 - 在开发人员控制台(F12)输出中寻找线索(我看到
Uncaught TypeError
错误,但它们似乎无关,因为我也在开发过程中得到了这些错误,并且数据表可以正常工作...)
我想念什么?
解决方法
我最终通过回溯我的脚步来解决了这个问题;从头生成了一个新的Rails 6应用,并在本地和Heroku中的每一步都仔细测试了bootstrap和Datatables.net。
万一有人有类似的问题,这就是我所做的:
-
遵循Chris Oliver关于如何在Rails和Webpacker上安装引导程序的出色Go Rails tutorial,生成新的Rails 6应用程序
-
然后通过运行
安装datatables.netyarn add datatables.net-bs4
-
将
require("datatables.net-bs4")
行添加到app/javascript/packs/application.js
,看起来像这样:require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("datatables.net-bs4")
-
并在文件末尾添加以下(示例)代码以初始化表ID(在我的情况下为
#mytable
上)的数据表:$(document).ready( function () { $('#mytable').DataTable({ "lengthMenu": [ [-1,10,50,100],["All",100] ] });
});
-
在您的视图文件(例如
index.html.erb
)中,向表中添加一个ID属性(有关更多信息,请参见Datatables.net manual):table class =“ table” id =“ mytable ”
现在该表在Heroku中可以正常工作。同样,也没有关于jQuery的控制台错误。
,Heroku在Postgresql数据库上运行。它不能与其他数据库一起正常工作。您能否将数据库更改为postgresql并尝试再次抛出heroku?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。