当我想以"ajaxized"方式从分页表中删除元素时出现问题.我的任务控制器调用其destroy方法响应[DELETE] /tasks/1234,但最后我想重定向到索引以自动刷新列表.
不幸的是,redirect_to tasks_url此时的要点是[DELETE] /tasks请求.
从destroy内部重定向时,有没有办法强制GET请求而不是DELETE ?
小智 23
使用状态为303的redirect_to
def destroy
@task = Task.find(params[:id])
@task.destroy
redirect_to :action => :index, status: 303
end
Run Code Online (Sandbox Code Playgroud)
redirect_to文档说:
http://api.rubyonrails.org/classes/ActionController/Redirecting.html
如果您使用GET或POST以外的XHR请求并在请求后重定向,则某些浏览器将使用原始请求方法跟踪重定向.这可能会导致不良行为,例如双重DELETE.要解决此问题,您可以返回303参见其他状态代码,使用GET请求将遵循该状态代码.
好吧,总结一下这个问题。我发现解决这个问题的最简单方法是通过添加以下内容来弄乱routes.rb:并直接在控制器中的销毁操作中"tasks" => "tasks#index", :via => :get使用(在我的例子中)。redirect_to tasks_url
这也将解决 kaminari 寻呼机的问题(在某些情况下会呈现奇怪的链接)。
| 归档时间: |
|
| 查看次数: |
4868 次 |
| 最近记录: |