我的问题
在我的 Rails 5 应用程序中,我有 2 个布局,因此我需要设置多个清单文件。
我做了什么
我做了以下事情:
-
The two layouts
have a user.html.erb
and a main.html.erb
html 文件,我在那里链接了正确的标签application.js
in user.html.erb
and my main.js
for main.html.erb
.
-
如果我遵循,文件将加载localhost:3000/assets/application.js
显示清单中包含的 js 文件的完整内容,同时/assets/main.js
仅显示以下行:
(function() {
}).call(this);
-
我按照以下讨论中包含的说明进行操作使用多个清单文件进行 Rails 4 资产预编译 https://stackoverflow.com/questions/16168166/rails-4-assets-precompilation-with-multiple-manifest-files,但他们没有工作
config.assets.precompile += %w( main.js )
我搜索了 Stack Overflow 并阅读了文档,但没有找到这个问题的答案。我在用:
* rails (5.0.1)
* sprockets (3.7.1)
* sprockets-rails (3.2.0)
Update
在 main.js 文件中,我包含以下内容作为测试:
//= require jquery
//= require bootstrap-sprockets
//= require jquery.easing
已测试的解决方案
- 我尝试按照此说明在我的 asset.rb 中添加摘要文件,但这并没有解决问题子目录清单文件的资产预编译 https://stackoverflow.com/questions/8305585/asset-pre-compilation-for-subdirectory-manifest-file?rq=1
- 我有 Rails 5 和 Ruby 2.3.3p222。一些旧的 Stackoverflow 讨论表明该问题是由 Ruby 2.0 引起的,他们建议恢复到 Ruby 1.9
- The 最佳解决方案(我在 Stackoverflow 讨论中读到),就是编辑 html div 和类,以便不同布局的不同 JS 文件都可以包含在一个清单文件中,而不会在浏览器中触发控制台错误。
我的解决方案
我的临时解决方案是,因为我有 2 个布局,其中一个 js 文件会导致另一个布局出现控制台错误,因为它们都使用相同的 id 或类,将是注释JS代码我不需要(因为我使用的 HTML 布局具有许多我不使用的效果),并且不在我的清单文件中包含导致问题的整个文件 (custom.js)。
我会将此文件单独包含在我的布局中main.html.erb
带有标签的文件。
<%= javascript_include_tag 'custom', 'data-turbolinks-track': 'reload' %>
这将解决所有问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)