use*_*600 3 ajax redirect ruby-on-rails
我正在从 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; });
Run Code Online (Sandbox Code Playgroud)
我的控制器已成功接收此请求,并且我的对象的属性已更新。然后我尝试重定向到具有特定 id 的索引页面。
单位控制器.rb
if @unit.update_attributes( ** data ** )
flash.notice = "Successfully updated "
redirect_to :controller => "/units", :action => "index", :id => params[:id]
end
Run Code Online (Sandbox Code Playgroud)
我的问题是,redirect_to 调用包含 PATCH 方法请求,因此返回路由错误。根据我的routes.rb 文件,它应该只是一个 GET 请求:
resources :units, except: :show
get '/units/index' => 'units#index'
Run Code Online (Sandbox Code Playgroud)
知道为什么我的redirect_to 调用包含 PATCH 方法请求以及如何将其更改为 GET 吗?
“如果您使用 GET 或 POST 以外的 XHR 请求并在请求后重定向,则某些浏览器将使用原始请求方法遵循重定向。这可能会导致不良行为,例如双重 DELETE。要解决此问题,您可以返回303. 请参阅将使用 GET 请求跟随的其他状态代码。” 取自ActionController::Redirecting#redirect_to的 API 文档。
顺便提一句。在这种情况下重定向并不是一个合适的解决方案。您最好应该呈现适当的模板或仅更新资源而不是所有资源(如果可能)。
| 归档时间: |
|
| 查看次数: |
3112 次 |
| 最近记录: |