2014-02-20 50 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