代码之家  ›  专栏  ›  技术社区  ›  Giuseppe

Rails在html公共文件中包含js

  •  0
  • Giuseppe  · 技术社区  · 7 年前

    我有一些html页面,其中每个页面都包含一些javascripts文件。我要把这些文件放在哪里?

    folder/
      page1/
        index.html
        script1.js
      page2/
        index.html
        script2.js
    

    已更新

    我解释得更好。我有一些由html页面和一些javascripts文件组成的小项目,其中我使用画布。我对每个页面都有不同的脚本。

    /sketches
      /project1
         index.html
         script1.js
         sketch.js
      /project2
         index.html
         sketch.js
    

    它们之间名为“sketch”的文件不同。 我想制作一个带有参数id的控制器,并在此基础上加载一个不同的项目。我把html页面放在了公共文件夹中,它成功了,但我对javascripts有问题,被拒绝了。

    所以,对于您要告诉我的内容,我必须将所有javascripts放在一个单独的文件夹中。。。我想保持这种结构。rails中是否没有办法将包含所有项目的文件夹作为静态文件夹提供服务?

    4 回复  |  直到 7 年前
        1
  •  6
  •   Vishal    7 年前

    您必须将所有js文件放在 app/assets/javascripts 文件夹

    更新的答案

    在应用程序中加载主JavaScript。每次都是js。现在为不同的需要创建文件。创建表单。js文件,一个myfancypart。js文件等。不要在应用程序中加载它们。html。erb布局。需要时动态加载它们:

    应用html。雇员再培训局:

    <%= javascript_include_tag "application" %>
    <%= yield :javascript_includes %>
    

    您视图的顶部。html。erb或用户/新。html。雇员再培训局:

    <% content_for :javascript_includes do %>
      <%= javascript_include_tag "users_new.js" %>
    <% end %>
    

    content\u for块中的所有内容都将按产量加载:javascript\u包括。

    资料来源: stackoverflow

        2
  •  2
  •   Muhammed Anees    7 年前

    最佳做法是将您的所有第三方资产 vendor/assets 文件夹和应用程序特定的资产 app/assets 文件夹你应该 require 特定清单文件中的资产。
    如果您的 vendor/assets/javascripts 文件夹中有一些像这样的js文件,

    `/vendor/
         /assets/
              /javascripts/`
                   script1.js
                   script2.js
    

    然后在你的 app/assets/javascripts/application.js 只需添加

      //= require script1
      //= require script2
    

    在rails 5.1+中 assets 目录已从供应商中删除,所以您应该创建自己的目录,并将其添加到 config/initializers/assets.rb 预编译或使用文件相对于供应商目录的相对路径。

        3
  •  1
  •   breq    7 年前

    您应该这样做:

    folder/
      pages/
        index.html
        aboutus.html
      assets/
        js/
          some_js.js
          anoter_js.js
        css/
          homepage.css
          about.css
    
        4
  •  1
  •   Bernie Chiu    7 年前
    /sketches
      sketch.js
      /project1
         index.html <-- include relative path for sketch.js
         script1.js
      /project2
         index.html <-- include relative path for sketch.js
    

    我认为您可以只包含父文件夹中的相对路径js文件,这样就不需要将其放入每个子文件夹。