我是一个完全的菜鸟,我正在尝试了解如何将 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/