我是Rails的新手,现在还没有真正了解资产管道......
我想要一个
views/product/product.js
后自动触发
views/product/index.html.erb
因干扰原因而呈现。
在加载任何或部分model.erb文件后,资产管道中是否存在调用model.js文件的位置?
我知道如何手动完成,并删除了
app/assets/javascripts/product.js
但是我必须在new,show中调用doSomethingAfterPageload()方法。删除等 更好的是,如果这也适用于部分人。
答案 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!"
它将在该控制器的每个视图中执行,例如index
或edit
。
希望这会有所帮助:)