Tôi đã tình cờ gặp một tình huống mà ứng dụng của tôi tìm kiếm một id không tồn tại trong cơ sở dữ liệu. Một ngoại lệ được ném. Tất nhiên, đây là một tình huống khá chuẩn đối với bất kỳ nhà phát triển web nào.Giải cứu chung trên toàn bộ bộ điều khiển khi không tìm thấy id - RoR
Nhờ this answer Tôi biết rằng việc sử dụng giao dịch cứu hộ với tình hình khá gọn gàng, như vậy:
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
Trong trường hợp khách hàng không thể được tìm thấy, người dùng được chuyển hướng đến trang index. Điều này hoạt động hoàn toàn tốt đẹp.
Bây giờ, mọi thứ đều tốt đẹp, nhưng tôi cần thực hiện các nỗ lực cứu hộ tương tự như hiển thị, chỉnh sửa, tiêu diệt, v.v. mỗi phương pháp điều khiển cần một id cụ thể.
Có nói rằng, đây là câu hỏi của tôi: không Có cách nào để thường nói với bộ điều khiển của tôi rằng nếu nó không thể tìm thấy id trong bất kỳ các phương pháp của nó, nó sẽ chuyển hướng đến trang chỉ mục (hoặc , nói chung, thực hiện một nhiệm vụ cụ thể)?
Tuyệt vời, điều đó thực hiện mẹo, cảm ơn bạn! Trong sự tò mò: tại sao phương pháp đó nên riêng tư? – weltschmerz
Chỉ cần cho sự sạch sẽ: phương pháp không cần phải được hiển thị cho các bộ điều khiển khác, đó là lý do tại sao nó được khai báo riêng. Nó sẽ hoạt động bình đẳng nếu phương thức không được khai báo riêng. – Baldrick
Bạn cũng có thể thêm thông báo flash flash [: notice] = "Không tìm thấy bản ghi" –