我有一些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中没有办法将包含所有项目的文件夹作为静态服务吗?
答案 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。
加载答案 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文件,因此您不需要将其放到每个子文件夹中。