我有一個非常簡單的rails應用程序,它的一些功能是基於ajax的。 當我從開發環境使用它時,一切都按預期運行。 然而,在生產環境中發生了一些奇怪的事情:當進行ajax調用時,基於HTML(HAML的)佈局被呈現而不是js(基於Coffee)。爲什麼我的rails應用程序沒有正確響應生產環境中的.js格式?
當比較生產和開發的日誌時,很明顯,我在處理回覆的方式上做錯了一些事情,但是我現在一直在摸索我的頭幾個小時。
比方說,我的要求是:/software_tags/1/edit.js 在我的開發日誌,我可以看到(和輸出是正確的,我得到預期的JavaScript頁面):
Started GET "/software_tags/1/edit.js" for 127.0.0.1 at 2012-07-17 16:59:34 -0700
Processing by SoftwareTagsController#edit as JS
Parameters: {"id"=>"1"}
Rendered shared/_error_messages.haml (0.1ms)
Rendered software_tags/_form.haml (4.5ms)
Rendered software_tags/edit.js.coffee (5.7ms) <---- THIS IS GOOD!
Completed 200 OK in 10ms (Views: 8.1ms | ActiveRecord: 0.4ms)
在但是我的開發日誌,我看到(和輸出是錯誤的,我得到的HTML頁面):
Started GET "/software_tags/1/edit.js" for x.x.x.x at 2012-07-18 01:59:54 +0200
Processing by SoftwareTagsController#edit as JS <--- Wouldn't that force the edit.js.coffee to be rendered instead of the edit.haml?
Parameters: {"id"=>"1"}
Rendered shared/_error_messages.haml (0.1ms)
Rendered software_tags/_form.haml (2.8ms)
Rendered software_tags/edit.haml (3.2ms) <---- THIS IS WRONG!
Completed 200 OK in 5ms (Views: 3.5ms | ActiveRecord: 0.5ms)
在我的控制器,編輯操作是這樣的:
def edit
respond_to do |format|
format.js
format.html
format.json { render json: @software_tag }
end
end
當我嘗試訪問json數據,但是,所有環境中的一切都很好,所以js輸出的錯誤輸出可能是什麼問題?
編輯:也許我失去了一些相當簡單的東西。我仍然無法從生產環境中實現發展中的工作。我使用Ruby 1.9.3和Rails 3.2.6,以及jQuery/jQuery-ujs。基本上,我會改進我的問題:當將link_to remote:true時,我如何強制服務器用javascript文件來回答我(並且在respond_to.js塊上的分支而不是在html上)?
的事實上,通過AJAX發出請求並不會改變請求所期望的格式。 XHR請求仍然可以用於HTML,XML,JSON,GIF或PDF資源。 – Gareth 2012-07-18 00:10:36
我一直在搞各種各樣的事情,我真的不明白爲什麼行爲是從開發到生產(只有不同之處在於我使用前者的乘客)。我已經嘗試使用ajaxSetup函數更改jQuery中XHR的接受設置,但仍然是同樣的問題。任何幫助都感激不盡。 – Doodloo 2012-07-18 01:28:21