我正在寻找能够继续使用重定向的最佳实践解决方案:在成功销毁操作后返回,因为可以从各种列表中删除许多项目。
不幸的是,当从项目视图本身启动删除时,策略会失败。
对于这种情况,您推荐什么方法?
答案 0 :(得分:5)
如果项目从其自己的视图页面中删除,您需要考虑您想要的行为。
我建议选择以下两种方法之一:
保留您的redirect :back
,并在请求的资源不再存在时实施某种第二次重定向,即/products/10
重定向到/products
@product = Product.find_by_id(params[:id]) # although I admit I'm not sure
redirect_to products_path unless @product # about this
如果特定路径与被破坏的路径匹配,则更改重定向
@product.destroy # you might need to save the path before you destroy the object..
redirect_to :back and return unless request.referrer == product_path(@product)
redirect_to products_path
我不认为这种情况有一个固定的标准,但我可以纠正。