我有两个 View ,一个叫做dashboard,另一个叫做home,它们都有各自的index.htm.erb 文件。 assets/javascripts 文件夹中相应的 JavaScript 文件似乎没有映射到这些 View 。例如,当我在 home.js 中运行警报,然后导航到 dashboard.html.erb 时,警报仍然运行。
我该如何解决这个问题以获得我正在寻找的功能?
我对如何在 Rails 中编写特定于页面的原始 JavaScript 感到困惑。
编辑:我可以使用公用文件夹,但我遇到了一些附属问题,因此我开始使用 Assets 文件夹中的文件。
最佳答案
Rails 关于 javascript 的“意见”之一是,它应该全部连接成一个文件 (application.js
),缩小并提供给客户端。这是为了尽量减少客户端在访问您的应用程序时需要发出的请求数量(目标是只有三个,一个用于您的 html,一个用于 css,一个用于 javascript [不包括页面上可能存在的任何图像) .])
如果您查看您的 application.js,您会看到一条说明它是“ list ”文件的注释,以及一行看起来像
require_tree .
这表示“将此文件夹中的每个 javascript 文件加载到此文件中”
为了加载一些页面特定的javascript,你需要
- 将一个单独的 javascript 文件放入
app/assets/javascripts
[称它为 custom.js,比如说] - 通过写入
stub custom
停止将该文件加载到应用程序 list 中在application.js
- 在您的 View 中手动包含自定义 javascript(或者,更好的可能是呈现您的 View 的布局):
<%= javascript_include_tag 'custom' %>
但是,我鼓励您看看是否真的需要分离这个 javascript,或者这个问题是否可以通过简单地将您的脚本本地化到它打算用于的页面来解决,这将保留相同的功能,并让您的加载时间稍微快一些。
$('body.some_custom_class').ready(function() {
alert('I'm running on this page!');
});
关于javascript - 对如何在 Ruby on Rails 中使用 vanilla JavaScript 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192826/