Rails包含html公共文件中的js

问题描述 投票:0回答:4

我有一些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中没有办法将包含所有项目的文件夹作为静态服务吗?

javascript html ruby-on-rails ruby ruby-on-rails-5.1
4个回答
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
投票

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


0
投票

你应该这样遵循:

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

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文件,所以你不需要放到每个子文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.