dch*_*cke 15 activerecord ruby-on-rails exception rescue
我偶然发现了我的应用程序查找数据库中不存在的id的情况.抛出异常.当然,对于任何Web开发人员来说,这都是一个非常标准的情况.
感谢这个答案我知道使用救援处理的情况非常整齐,如下:
def show
@customer = Customer.find(params[:id])
rescue ActiveRecord::RecordNotFound #customer with that id cannot be found
redirect_to action: :index #redirect to index page takes place instead of crashing
end
Run Code Online (Sandbox Code Playgroud)
如果找不到客户,则用户被重定向到索引页面.这绝对没问题.
现在,这一切都很好,但我需要在show,edit,destroy等操作中进行相同的救援尝试,即每个需要特定id的控制器方法.
话虽如此,这是我的问题: 没有任何方法可以告诉我的控制器,如果它无法在任何方法中找到id,它将重定向到索引页面(或者,通常,执行特定的任务)?
Bal*_*ick 33
您必须使用rescue_from此任务.请参阅" 操作控制器概述指南"中的示例
class ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordNotFound, :with => :record_not_found
private
def record_not_found
redirect_to action: :index
end
end
Run Code Online (Sandbox Code Playgroud)
Rails有一个内置的rescue_from类方法:
class CustomersController < ApplicationController
rescue_from ActiveRecord::RecordNotFound, with: :index
...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7439 次 |
| 最近记录: |