Rails 在 html public 个文件中包含 js
Rails include js in html public files
我有一些 html 个页面,其中每个页面都包含一些 javascripts 文件。我必须将这些文件放在哪里?
folder/
page1/
index.html
script1.js
page2/
index.html
script2.js
Updated
我解释得更好。我有一些由 html 页面和一些 javascripts 文件组成的小项目,我在其中使用 canvas。每个页面都有不同的脚本。
/sketches
/project1
index.html
script1.js
sketch.js
/project2
index.html
sketch.js
名为'sketch'的文件在它们之间是不同的。
我 tought 制作一个带有参数 id 的控制器,并基于此我将加载一个不同的项目。我做到了,将 html 页面放入 public 文件夹中并且它起作用了,但是我遇到了 javascript 问题,被拒绝了。
因此,对于您所说的,我必须将所有 javascript 放在一个单独的文件夹中...我想保留该结构。 rails 中是否无法将包含所有项目的文件夹作为静态文件夹提供服务?
您必须将所有 js 文件放在 app/assets/javascripts
文件夹下。
Updated Answer
每次都加载 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 块中的所有内容都将在屈服时加载:javascript_includes。
来源:Whosebug
你应该这样关注:
folder/
pages/
index.html
aboutus.html
assets/
js/
some_js.js
anoter_js.js
css/
homepage.css
about.css
最佳做法是将所有第三方资产放在 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
目录已从 vendor 中删除,因此您应该创建自己的目录并将其添加到 config/initializers/assets.rb
进行预编译或使用相对路径关于供应商目录的文件。
/sketches
sketch.js
/project1
index.html <-- include relative path for sketch.js
script1.js
/project2
index.html <-- include relative path for sketch.js
我认为你可以只包含父文件夹中的相对路径 js 文件,这样你就不需要放入每个子文件夹。
我有一些 html 个页面,其中每个页面都包含一些 javascripts 文件。我必须将这些文件放在哪里?
folder/
page1/
index.html
script1.js
page2/
index.html
script2.js
Updated
我解释得更好。我有一些由 html 页面和一些 javascripts 文件组成的小项目,我在其中使用 canvas。每个页面都有不同的脚本。
/sketches
/project1
index.html
script1.js
sketch.js
/project2
index.html
sketch.js
名为'sketch'的文件在它们之间是不同的。 我 tought 制作一个带有参数 id 的控制器,并基于此我将加载一个不同的项目。我做到了,将 html 页面放入 public 文件夹中并且它起作用了,但是我遇到了 javascript 问题,被拒绝了。
因此,对于您所说的,我必须将所有 javascript 放在一个单独的文件夹中...我想保留该结构。 rails 中是否无法将包含所有项目的文件夹作为静态文件夹提供服务?
您必须将所有 js 文件放在 app/assets/javascripts
文件夹下。
Updated Answer
每次都加载 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 块中的所有内容都将在屈服时加载:javascript_includes。
来源:Whosebug
你应该这样关注:
folder/
pages/
index.html
aboutus.html
assets/
js/
some_js.js
anoter_js.js
css/
homepage.css
about.css
最佳做法是将所有第三方资产放在 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
目录已从 vendor 中删除,因此您应该创建自己的目录并将其添加到 config/initializers/assets.rb
进行预编译或使用相对路径关于供应商目录的文件。
/sketches
sketch.js
/project1
index.html <-- include relative path for sketch.js
script1.js
/project2
index.html <-- include relative path for sketch.js
我认为你可以只包含父文件夹中的相对路径 js 文件,这样你就不需要放入每个子文件夹。