2013-04-08 109 views
0

我是一个完整的noob,我试图了解如何在Rails中使用JavaScript与资产管道。 例如,我在哪里放置一个简单的$(document).ready以在特定视图中执行。我已经完成了将视图本身的代码,但我认为这不是实现它的最佳方式。 补充阅读也将不胜感激,谢谢。Ruby on rails:资产管道中的javascript

回答

5

创建一个名为新文件我通常根据意见或模型拆分这些。它最终并不重要,因为资产管道将所有这些都归结为一个大文件。分裂到文件是根据您的喜好和喜好。

所以,在whatever.js你可以写任何你想要的JS代码,与$(document).ready,不..资产管线并不真正关心。如果你的代码写入需要$(document).ready,使用它。如果没有,请不要......

一旦你完成了你的JS,Rails默认将把你在application.js清单文件中告诉它的所有js文件放在一个文件中,并按照你的命令写

所以它看起来像

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

所以它会加载jQuery的第一个,然后jQuery的UJS,然后引导再树是其中的application.js当前目录是在

同样你只能做

//= require whatever.js 

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

一旦部署到生产环境,这取决于你需要什么,你可以预编译通过资产管线内的全部资产与rake assets:precompile或者你可能有一个脚本,它将自动预编译上部署像asset_sync宝石

基本上,你应该将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.jswhatever.html.erb

whatever.html.erb你可以写

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

然后,在你的布局文件(其中有<%=%的收率>地方中的一个文件,转到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文件。

但是既然你说你是一个完整的noob,我会建议保持简单,并且首先包含所有的js文件,只需要为你的html元素使用唯一的类和ID,你应该没问题。很可能,有些人可能不同意这一点。但是既然你说你是一个完全的小白,那么我说什么或他们说什么都不重要。无论你更容易理解是什么。因此,实验与它

+0

惊人的答案,这是所有我需要知道。谢谢! – 2013-04-08 06:35:54

0

所有的JavaScript应该在 应用程序/资产/ JavaScript的

您也可以为特定视图一个单独的js文件也可以在application.js中文件

把这个代码写你的js代码在布局<%= javascript_include_tag “应用程序” %>

最后运行 耙资产:预编译