重定向发出PATCH请求而不是GET

我正在从我的application.js文件中发出一个ajax补丁请求:

$.ajax({ type: "PATCH", url: "/units/" + id, data: { 'var_1': var_1, 'var_2': var_2,}, success:function(){ alert("Details saved successfully!!!"); }, dataType: "text" }); // stop normal form submission behaviour $("#add_form").submit(function(e){ return false; }); 

我的控制器成功接收到此请求,并更新了我的对象的属性。 然后我尝试重定向到具有特定id的索引页面。

units_controller.rb

 if @unit.update_attributes( ** data ** ) flash.notice = "Successfully updated " redirect_to :controller => "/units", :action => "index", :id => params[:id] end 

我的问题是redirect_to调用包含PATCH方法请求,因此返回路由错误。 它应该只是一个GET请求,根据我的routes.rb文件:

 resources :units, except: :show get '/units/index' => 'units#index' 

知道我的redirect_to调用包含PATCH方法请求以及如何将其更改为GET的原因吗?

“如果您正在使用GET或POST之外的XHR请求并在请求之后重定向,那么某些浏览器将使用原始请求方法跟踪重定向。这可能会导致不良行为,例如双DELETE。要解决此问题,您可以返回303.请参阅使用GET请求将遵循的其他状态代码。“ 取自ActionController ::重定向#redirect_to的API文档。
顺便说一句。 在这种情况下重定向不是一个合适的解决方案。 您最好应该呈现适当的模板,或者只更新资源而不是所有资源(如果可能)。