Rails包含html公共文件中的js

时间:2017-12-27 08:57:01

标签: javascript html ruby-on-rails ruby ruby-on-rails-5.1

我有一些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 个答案:

答案 0 :(得分:4)

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

  

更新的答案

每次都在application.js中加载主JavaScript。现在创建满足不同需求的文件。创建一个form.js文件,一个myfancypart.js文件等。不要在application.html.erb布局中加载它们。在需要时动态加载它们:

application.html.erb:

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

您的view.html.erb或者users / new.html.erb:

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

content_for块中的所有内容都将以yield:javascript_includes。

加载

来源:stackoverflow

答案 1 :(得分:1)

最佳做法是将所有第三方资源放在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以预编译或使用相对于供应商的文件的相对路径。目录

答案 2 :(得分:0)

你应该这样说:

folder/
  pages/
    index.html
    aboutus.html
  assets/
    js/
      some_js.js
      anoter_js.js
    css/
      homepage.css
      about.css

答案 3 :(得分:0)

/sketches
  sketch.js
  /project1
     index.html <-- include relative path for sketch.js
     script1.js
  /project2
     index.html <-- include relative path for sketch.js

我认为您可以在父文件夹中包含相对路径js文件,因此您不需要将其放到每个子文件夹中。