多个清单文件的Rails 5问题

时间:2017-02-17 19:01:28

标签: ruby-on-rails ruby-on-rails-5 sprockets rails-assets

感谢您的帮助。

我的问题

在我的Rails 5应用程序中,我有2个布局,因此我需要设置多个清单文件。

我做了什么

我做了以下事情:

  1. 这两个layouts有一个user.html.erb和一个main.html.erb html文件,我在application.js和我的{{user.html.erb中使用了正确的标记main.js。 1}} main.html.erb
  2. 文件加载,如果我按照localhost:3000/assets/application.js显示清单中包含的js文件的完整内容,而/assets/main.js只显示以下行:

    (function() {
    }).call(this);
    
  3. 我遵循以下讨论Rails 4 Assets Precompilation with multiple manifest files中包含的说明,但它们无法正常工作

    config.assets.precompile += %w( main.js )
    
  4. 我搜索了Stackoverflow并阅读了该文档,但是从未找到过这个问题的答案。我正在使用:

    * rails (5.0.1)
    * sprockets (3.7.1)
    * sprockets-rails (3.2.0)
    

    更新

    在main.js文件中,我将以下内容作为测试:

    //= require jquery
    //= require bootstrap-sprockets
    //= require jquery.easing
    

    非常感谢你的帮助,我真的希望你能帮助我。 最好的祝福 Fabrizio Bertoglio

1 个答案:

答案 0 :(得分:0)

已测试的解决方案

  1. 我尝试按照此说明添加我的assets.rb摘要文件,但这并没有解决问题 asset pre compilation for subdirectory manifest file
  2. 我有Rails 5和Ruby 2.3.3p222。一些旧的Stackoverflow讨论表明问题是由Ruby 2.0引起的,他们建议恢复为Ruby 1.9 Javascript files are not included from manifest
  3. 最佳解决方案(我在Stackoverflow讨论中读到)是编辑html div和类,以便不同布局的不同JS文件都可以包含在一个清单文件中,不会在浏览器中触发控制台错误。
  4. 我的解决方案

    我的临时解决方案是,因为我有2个布局,其中一个js文件会导致其他布局中的控制台错误,因为它们都会使用相同的ID或类,会评论JS代码我不需要(因为我使用的HTML布局有许多我不使用的效果)并且不包括导致我的清单文件中的问题(custom.js)的整个文件。 我会在带有标签的布局main.html.erb文件中单独包含此文件。

    <%= javascript_include_tag 'custom', 'data-turbolinks-track': 'reload' %>
    

    这可以解决所有问题。