加载页面后自动加载javascript函数

时间:2014-02-20 16:27:05

标签: javascript ruby-on-rails asset-pipeline actionview

我是Rails的新手,现在还没有真正了解资产管道......

我想要一个

views/product/product.js 

后自动触发

views/product/index.html.erb 

因干扰原因而呈现。

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

我知道如何手动完成,并删除了

app/assets/javascripts/product.js

但是我必须在new,show中调用doSomethingAfterPageload()方法。删除等 更好的是,如果这也适用于部分人。

3 个答案:

答案 0 :(得分:3)

vanilla配置下的资产管道只是(简化说明)将获取清单(application.js)中引用的所有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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

从这里采取:Asset Pipeline - Rails guides

如果你添加app/assets/javascripts/<controller>.js,它将可用于该特定控制器。

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

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

它将在该控制器的每个视图中执行,例如indexedit

希望这会有所帮助:)