javascript - rails 上的 ruby : javascript in asset pipeline

标签 javascript ruby-on-rails asset-pipeline

我是一个完全的菜鸟,我正在尝试了解如何将 javascript 与 Rails 中的 Assets 管道一起使用。 例如,我在哪里放置一个简单的 $(document).ready 以在特定 View 中执行。我已经将代码放在 View 本身中,但我认为这不是最好的方法。 补充阅读也将不胜感激,谢谢。

最佳答案

创建一个名为whatever_you_want.js 的新文件我通常根据 View 或模型拆分它们。最后这并不重要,因为 Assets 管道将它全部压缩到一个大文件中。拆分成文件是根据您的喜好和喜好。

所以,在 whatever.js 中,你可以编写任何你想要的 JS 代码,使用 $(document).ready,没有.. asset pipeline 并不关心.. 如果您编写的代码需要$(document).ready,请使用它。如果没有,请不要...

一旦你完成你的 JS,默认情况下,Rails 将获取你在 application.js list 文件中告诉它的所有 js 文件,并按照你编写的顺序将它们放在一个文件中

看起来像

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .

所以它会先加载 jquery,然后是 jquery ujs,然后是 bootstrap,然后是 application.js 所在的当前目录

同样你只能做

//= require whatever.js

在开发过程中,默认情况下,您不会看到一个大文件,而是会看到所有文件,因为这种方式更容易调试。

部署到生产环境后,根据您的需要,您可以使用 rake assets:precompile 通过 Assets 管道预编译所有 Assets ,或者您可能有一个脚本会在部署时自动预编译,例如 asset_sync gem

基本上,您应该将 js 代码放在 js 文件中,将 html 代码放在 View 文件中,因为链轮(压​​缩 js 和东西的 gem)不处理不在要预编译的 Assets 文件/文件上的 JS

一些补充读物供您娱乐

http://guides.rubyonrails.org/asset_pipeline.html

http://railscasts.com/episodes/279-understanding-the-asset-pipeline

http://blog.55minutes.com/2012/02/untangling-the-rails-asset-pipeline-part-3-configuration/

希望对你有所帮助

多看了几遍你的问题,我明白你问的是“与特定 View 相关的js代码放在哪里”

好了,现在您已经熟悉了 Assets 管道,您现在可以了解如何使用它了:

在你的 whatever.js 文件中,你可以写任何你想写的东西。假设你没有 //=require_tree .application .js,所以它不包含所有的js文件,你必须在whatever.html.erb

中有whatever.js

whatever.html.erb中你可以写

<% content_for :head do %>
  <%= javascript_include_tag "whatever.js" %>
<% end %>

然后,在你的布局文件中(一个内部某处有 <%= yield %> 的文件,转到 html 的头部并写

<%= yield :head %>

head 这个名字基本上就是你想要的。

这会告诉 Rails 类似“嘿伙计,这个 whatever.js 文件适合你.. 把它放在 :head 里好吗?” Rails 就像“你知道了先生!”

这样你就可以在你想要的任何 View 中包含你想要的任何 js 文件。

但既然你说你是一个完全的菜鸟,我建议保持简单,并在一开始就包含所有 js 文件,只需为你的 html 元素使用唯一的类和 ID,你应该没问题。很可能,有些人可能不同意这一点。但既然你说你是个彻头彻尾的菜鸟,那么我说什么或他们说什么并不重要。任何对你来说更容易理解的都是。所以尝试一下

关于javascript - rails 上的 ruby : javascript in asset pipeline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872214/

相关文章:

ruby-on-rails - Javascript list 文件 "application.js"未处理

Javascript:Is-SubArray 返回 false

javascript - 循环显示分层数据

javascript - 使用 JavaScript 检测对转换的支持

ruby-on-rails - Rails 中的这个神秘 'j' 是什么?

sql - named_scope 按最后评论日期排序帖子

css - 我如何找出哪种样式覆盖另一种样式?

javascript - 需要单击图像映射区域以选择相应的单选按钮

ruby-on-rails - 如何抑制使用 fork/exec 创建的子进程的任何输出

ruby-on-rails - 大型项目的 sprockets 最佳实践