我有一些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中没有办法将包含所有项目的文件夹作为静态服务吗?
您必须将所有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
最佳做法是将所有第三方资产放在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
以预编译或使用与供应商目录相关的文件的相对路径。
你应该这样遵循:
folder/
pages/
index.html
aboutus.html
assets/
js/
some_js.js
anoter_js.js
css/
homepage.css
about.css
/sketches
sketch.js
/project1
index.html <-- include relative path for sketch.js
script1.js
/project2
index.html <-- include relative path for sketch.js
我想你可以只包含父文件夹中的相对路径js文件,所以你不需要放到每个子文件夹。