我們目前正在重構我們的網站,我們決定只使用一個js庫(jquery)。問題在於,由於時間的限制,我們現在只能做到這麼多,我們必須讓它們共存。在rails中添加content_for內容
這很簡單,因爲我們擁有jQuery的無衝突的方法,這樣我就可以申報,然後jQuery的做任何衝突的事情,然後添加原型,像這樣:
<%= javascript_include_tag "jquery" %>
<%= yield :jquery %>
<%= javascript_include_tag "prototype", "effects", "dragdrop", "controls", "lowpro", "neo", "filter", "slider", "calendar", "application", 'alerts' %>
然後我就叫content_for(:jQuery的)每當我需要添加一個特定的jQuery文件(這有沒有衝突函數)的部分需要它。所以沒有問題。
問題是當你包含2個部分與不同的jQuery文件。只有其中一個被調用,因爲content_for jquery已經被調用,它不會再被調用(所以讓我們在a.rhtml中說,我添加了a.js並且在b.rhtml中添加了b.js,只有a.js將包括在內)
一個解決方案是將所有東西都包含在一個主js文件中,但由於每個函數都存在,所以難以維護等等。有沒有辦法讓我可以追加到content_for當它已經有被稱爲?
我剛剛查了API:
http://apidock.com/rails/v2.3.8/ActionView/Helpers/CaptureHelper/content_for
似乎content_for實際上追加。但是,我發生了什麼,它只是不附加/清除。它只是完全忽略了第二個內容的呼叫
嗯,我們已經有捆綁fu(目前不工作),但問題是我必須包括我的jquery文件之前調用原型(所以我可以返回$變量),因此收益率 – corroded 2010-08-24 08:11:15
你也可以使用'var $ j = jQuery.noConflict()',然後你可以使用'$ j'作爲jquery,並且原型繼續使用'$'。這樣你可以並排使用它們。 – nathanvda 2010-08-24 11:14:58
我的觀點是,如果您使用Jammit的資產,您可以按固定的順序打包所有的Javascript資產並停止擔心他們。 :) – 2010-08-24 18:48:49