2011-09-20 81 views
0

所以我有提交一個表單到使用Javascript(目標爲空)外部車的應用程序,然後我希望窗口導航到Rails控制器創建一個小的跟蹤模型,控制器等:Chrome在Rails中提交窗體並導航窗口?

def add_to_cart 
    @product = Product.find(params[:id]) 
    @product.cart_trackers.create 
    redirect_to :back 
end 

和JavaScript(在的link_to,輔助性的onclick):

document.forms['addCart#{product.id}'].submit(); 
window.location.href=\"/products/add_to_cart/#{product.id}\"; 
return false; 

而這種奇妙的作品在Firefox和Internet Explorer,但谷歌瀏覽器拋出一個合適的了這麼多的導航。我意識到AJAX可能是一個有價值的解決方案,但由於環境下運行該應用程序(這是一個Prototype,Jquery,iFrames和包括clustercrap)我想避免它,如果可能的話。 Chrome的迴應是實際運行window.location ...代碼並跳過表單提交。如果沒有其他代碼,Chrome會執行單一操作。

那麼,寫出來的正確方法是什麼?或者我應該只是在一些AJAX中進行爭吵?

回答

1

嘗試使用AJAX-but-not-really-AJAX。使用您想要的任何AJAX提交器(例如$ .ajax)提交表單,但不對響應做任何事情(即無回調)。這樣數據就會被髮布,也許瀏覽器不會因爲你要求它連續訪問兩個網站而感到不安。

+0

那麼AJAX似乎是要走的路?再一次,從過去的開發人員,很難遵循他們的腳本導入和重命名約定(他們不斷向jQuery.noConflict()分配新變量)因此讓jQuery或Prototype在漏斗末尾工作是半夢魘的 –

+0

它可能是你可以做的事情,而不會糾結在所有這些。 AJAX意味着雙向通信 - 即您擊中服務器併發迴響應。你真正需要做的就是點擊它看起來像的服務器。或者,您可以只從控制器執行兩個步驟嗎?提交表單,然後控制器重定向到/products/add_to_cart/#{product.id}? – dantswain

+0

這將工作,但表格在應用程序外部提交 –