Rails 5 - Rails-ujs已经被加载

3
我把标签javascript放到了我的应用程序正文中。
在控制台中,我收到以下错误信息:

Rails-ujs已经被加载。

在开发模式下,应用程序可以正常工作,但在生产模式下无法正常工作。
我将我的Rails应用程序部署到了Heroku上。
我试图将标签javascript移到头部,但是那时所有的js函数都不能正常工作。
有什么解决办法吗?

请编辑您的问题并添加您正在添加/删除的HTML代码。同时展示您的application.js文件。在开发模式下,它每次都会组合资产。在Heroku上,由于预编译资产或与turbolinks有关的问题,您可能会看到问题。 - Beartech
3个回答

3
如果您正在使用webpack和单独的前端,那么在application.html中可能会有两个JavaScript标签实例。
= javascript_include_tag 'application', 'data-turbolinks-eval' => false
= javascript_pack_tag 'application'

您需要移除第一个实例;同样,如果您使用pack_tag来渲染您的样式表,您可能会遇到CSS类被调用两次的情况(在开发工具中,您将看到元素上堆叠的类)。


我长期以来一直遇到这个问题,'data-turbolinks-eval' => false 解决了我的问题 +1。 - Juan Ricardo

0

我解决了将我的JavaScript引入head中,并在下面简单地包含所有函数:

$ (document).on('turbolinks: load', function () {
})


0

如果您不使用webpack,则可以像这样使用:

    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload', 'data-turbolinks-eval': false %>
    <%= javascript_include_tag 'frontend_application', 'data-turbolinks-track': 'reload' %>
</body>

在 application.js 文件中

//= require rails-ujs
//= require activestorage
//= require turbolinks

在 frontend_application.js 文件中

//= require compress.min
//= require custom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接