2011-09-20 30 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

这将工作,但表格在应用程序外部提交 –