我偶然发现我的应用程序查找数据库中不存在的id的情况。抛出异常。当然,对于任何Web开发人员来说,这都是相当标准的情况。通用救援整个控制器时,没有找到id - RoR
感谢this answer我知道,使用救援涉及的情况非常整齐,像这样:
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
如果客户无法找到,用户被重定向到索引页面。这工作绝对好。
现在,这一切都是好的,但我需要做同样的救援尝试像显示,编辑,破坏,动作等,即需要一个特定ID每个控制器的方法。
话虽如此,这里是我的问题: 是不是有什么办法可以大致告诉我的控制器,如果它不能找到任何其方法的ID,它应当重定向到索引页面(或,一般来说,执行一个特定的任务)?
太棒了,就是这样做,谢谢!出于好奇:为什么这种方法应该是私人的? – weltschmerz
只是为了清洁:该方法不需要对其他控制器可见,这就是为什么它被宣布为私有。如果该方法未被声明为私有,它将同样工作。 – Baldrick
您还可以添加一个flash讯息 flash [:notice] =“没有找到记录” –