javascript - 对如何在 Ruby on Rails 中使用 vanilla JavaScript 感到困惑

标签 javascript ruby-on-rails

我有两个 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/

相关文章:

ruby-on-rails - 在不允许所有 html 标签的情况下解析文本区域中的换行符

ruby-on-rails - Rails 与 group by 和 include 求和

ruby-on-rails - 如何在 ruby​​ 中找到跨记录的最大属性?

javascript - 将 grunt-connect-proxy 添加到生成器 Angular gruntfile.js

javascript - 使用 Javascript window.open 和 jQuery 提交表单

javascript - 在 session 之间存储持久列表?

javascript - PHP-如何将 html 表格单元格值添加到 MYSQL 数据库

Javascript 图像和文本数组格式化

javascript - Rails 4 ExecJS::Listings#index 中的程序错误

ruby-on-rails - 自定义非自动递增 ActiveRecord "id"列可能吗?