2011-08-22 63 views
1

我剛從Rails 2.3升級到Rails 3.0。此應用程序廣泛使用Ajax。Rails3 xhr響應作爲文本/ html而不是文本/ javascript

由於升級,每個

respond_to do |format| 
    format.js 
end 

迴應與內容類型的text/html代替text/javascript(如在螢火蟲觀察)。 XHR請求指定Accept="text/javascript"。結果是Prototype拒絕評價響應,所以在我的頁面上沒有更多的魔法...

爲了精確,我決定包含舊版RailsPrototypeHelpers,完整的UJS應用程序將成爲下一個應用程序。我試圖把js放在js.rjs文件中:content-type仍然是'text/html' 我試圖內聯js並用render :update, :content_type => 'text/javascript'強制執行:沒有運氣,仍然回答'text/html ' 內容類型。

任何建議是值得歡迎的。

謝謝。

+0

同樣發生在這裏,但怪異。 Chrome和Safari都可以。然而,在Firefox上,內容類型在第一次發佈請求時設置爲「text/javascript」,但第二次發佈時設置爲「text/html」,這給了我一個406.使用Rails 3.2.3 – rapcal

+0

儘管這個問題仍然存在似乎不會影響每個人:https://github.com/rails/rails/issues/14173。 – Steve

回答

2

我一直有類似的問題。我發現,我能得到它返回text/javascript如果添加此:

headers["Content-Type"] = "text/javascript; charset=utf-8" 
render :update do |page| 
    ... 
end 

respond_to do |format| 
    format.js {headers["Content-Type"] = "text/javascript; charset=utf-8"} 
end 
相關問題