![](/img/trans.png)
[英]Linking a Javascript function on a layout that is loaded from the asset pipeline in ruby on rails?
[英]Ruby on rails: javascript in asset pipeline
我是一个完整的菜鸟,我想了解如何在Rails的资产管道中使用javascript。 例如,在哪里放置简单的$(document).ready在特定视图中执行。 我已经完成了将代码放入视图本身的工作,但是我认为那不是最好的方法。 补充阅读也将不胜感激,谢谢。
创建一个名为whatever_you_want.js
的新文件。我通常根据视图或模型将它们拆分。 最终这并不重要,因为资产管道会将其全部处理到一个大文件中。 分成文件就是根据您的喜好和喜好。
因此,在whatever.js
您可以使用$(document).ready
编写所需的任何JS代码,而无需..资产管道并不十分在意。.如果编写的代码需要$(document).ready
,请使用它。 如果没有,请不要...
完成使用JS后,默认情况下,Rails将把您在application.js
清单文件中告诉您的所有js文件,并按照您编写的顺序放入一个文件中。
所以看起来像
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .
因此它将首先加载jquery,然后加载jquery ujs,然后引导,然后再加载tree,这是application.js所在的当前目录
同样,你只能做
//= require whatever.js
在开发中,默认情况下,您不会看到一个大文件,但是会看到所有文件,因为这样更容易调试。
部署到生产环境后,根据需要,可以使用rake assets:precompile
通过资产管道对所有资产进行rake assets:precompile
或者您可以拥有一个可以在部署时自动进行预编译的脚本,例如asset_sync
gem
基本上,您应该将js代码放在js文件中,并将html代码放在视图文件中,因为链轮(压缩js和内容的gem)无法处理不在资产文件/要预编译的文件上的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/
希望对您有所帮助
多读几次您的问题后,我意识到您要问的是“将与特定视图相关的js代码放在哪里”
好了,现在您熟悉资产管道,现在可以了解如何使用它:
在您的whatever.js
文件中,您将编写任何内容。.假设您没有//=require_tree .
在application.js
,因此它不包含所有js文件,因此您必须在whatever.js
中包含whatever.html.erb
在whatever.html.erb
您可以编写
<% content_for :head do %>
<%= javascript_include_tag "whatever.js" %>
<% end %>
然后,在您的布局文件(一个内部有<%= yield%>的文件中,转到html的开头并写
<%= yield :head %>
名字头基本上就是您想要的。
这会告诉Rails,诸如"Hey man, this whatever.js file is for you.. just put it in the :head ok?"
Rails就像"You got it mister!"
这样,您可以在所需的任何视图中包含所需的任何js文件。
但是由于您说过您是一个完整的菜鸟,所以我建议保持简洁,并在所有步骤中包括所有js文件,只需对HTML元素使用唯一的类和ID,就可以了。 很有可能,有些人可能不同意这一点。 但是,由于您说的是完全菜鸟,所以我所说的或他们所说的并不重要。 您更容易理解的是。 所以尝试一下
所有JavaScript都应位于app / assets / javascript中
您也可以为特定视图制作单独的js文件,也可以在application.js文件中编写js代码
将此代码放入布局<%= javascript_include_tag“应用”%>
最后运行rake资产:预编译
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.