2014-02-20 115 views
3

我是新来的Rails,并没有真正理解现在的资产管道...加载后页面会自动加载javascript函数

我想让一个

views/product/product.js 

自动闪光的

views/product/index.html.erb 

出于干燥的原因。

加载任何或部分model.erb文件后,资产管道中是否存在调用model.js文件的地方?

我知道该怎么做手工,并放弃了

app/assets/javascripts/product.js 

但后来我得叫doSomethingAfterPageload()方法在新的节目。删除等 更好,如果这适用于偏股。

回答

2

vanilla配置下的资产管道仅仅是(简化解释),将采用清单中引用的所有js文件(application.js)并为生产创建单个缩小混淆文件。在开发过程中,如果您在页面中包含清单(应该是布局),那么最终将为清单中包含的每个资产添加js脚本包含标记。

一个常见的模式是在您的布局中放置yield :javascript块,然后在单个视图中调用content_for :javascript do块内的javascript函数。

Best way to add page specific javascript in a Rails 3 app?

甲发烧友的方法将是有条件地执行基于控制器和动作上JS。这里是如何工作的:http://viget.com/inspire/extending-paul-irishs-comprehensive-dom-ready-execution

0

IMO,如果应该在产品模型的每个视图中调用此js方法,则可以为产品定义布局,并在布局文件中调用该方法。

0

从这里摘自:Asset Pipeline - Rails guides

如果添加app/assets/javascripts/<controller>.js这将是适用于特定的控制器。

因此,如果您添加到app/assets/javascripts/product.js

$(document).ready -> 
    alert "page has loaded!" 

这将在控制,像indexedit的每一个视图下执行。

希望这有助于:)

+0

谢谢!我之前尝试过,但它也会在所有其他控制器视图中执行... – user3320429