Tôi mới phát triển Rails và tôi có câu hỏi về việc xử lý một hành động không xác định. Cách tốt nhất để xử lý lỗi loại đó là gì?Xử lý Tác vụ không xác định trong Rails 3
Trả lời
Không xử lý. Nếu người dùng nhập sai URL, họ sẽ gặp lỗi 404 khi bạn chuyển sang môi trường sản xuất.
Bạn chỉ nhận được ngoại lệ vì bạn đang ở trong môi trường phát triển.
Bạn nên sử dụng xử lý Rails mặc định sẽ tải tệp 404 trong thư mục công khai của bạn.
Hiển thị lỗi 404, người dùng đã nhập URL mà bạn không có Hành động tương ứng trong Bộ điều khiển (hoặc tuyến đường) được xác định để xử lý. Nó sẽ được xử lý giống như khi người dùng nhập example.com/controller/jbsandfodsafoiuaudsfbsadf87basdfgsadfdsa
.
Trong chế độ sản xuất, ngoại lệ sẽ được xử lý tự động. Nhưng có những trường hợp chúng tôi muốn xử lý các trường hợp ngoại lệ. Trong trường hợp của chúng tôi, chúng tôi sẽ hiển thị bố cục đặc biệt cho các trang như vậy.
Trong điều khiển ứng dụng mà bạn phải giải cứu các trường hợp ngoại lệ như thế này:
PAGE_NOT_FOUND_ERRORS = ActiveRecord::RecordNotFound, ActionController::RoutingError, ActionController::UnknownAction, ActionController::UnknownController
def rescue_action_in_public(exception)
case exception
when *PAGE_NOT_FOUND_ERRORS
render_404
else
render_500
end
end
def render_404
render :file => File.join(RAILS_ROOT, 'public', '404.html'), :status => 404, :layout => true
end
def render_500
render :file => File.join(RAILS_ROOT, 'public', '500.html'), :status => 500
end
Trong config/environments/development.rb
, tắt consider_all_requests_local
và khởi động lại máy chủ. Bây giờ bạn sẽ thấy các trang lỗi. Khi bạn đã hoàn thành thiết kế, hãy bật lại consider_all_requests_local
và khởi động lại máy chủ.
Trong quá trình sản xuất, mọi người sẽ nhận được trang 404 mà bạn đã thiết kế. Trong quá trình phát triển, bạn thấy dấu vết ngăn xếp để bạn có thể gỡ lỗi của chính mình.
- 1. Xử lý tệp js.erb trong Rails 3
- 2. Rails 3, Trình xác thực không xác định: 'EmailValidator'
- 3. Cột Trình quản lý tác vụ Windows - Xử lý
- 4. Rails 3: Phương pháp xác định 'remote_form_for'
- 5. Wicket: cách xử lý các tác vụ chạy dài
- 6. Xử lý một mẫu biến không xác định trong Tornado
- 7. Đường dẫn hoặc nút Rails 3 thực thi tác vụ trong bộ điều khiển
- 8. Tác vụ và tác vụ.WaitAll với xử lý ngoại lệ hết giờ
- 9. Xác nhận ngày trong Rails 3
- 10. Bắt hành động không xác định trong Rails 3 cho tuỳ chỉnh 404
- 11. Một số loại trình quản lý tác vụ cho JavaScript trong Firefox 3?
- 12. Rails 3: xác định phụ thuộc đá quý plugin
- 13. Rails 3 xác nhận định dạng IPv4 và IPv6
- 14. Rails 3: xác thực form_tag
- 15. Rails Xác định trình tự vụ việc phê chuẩn
- 16. Xác định bên ngoài Macro tiền xử lý trong GLSL
- 17. Cách tốt nhất để xử lý đa nhiệm trong Rails 3
- 18. Cách hiển thị biểu tượng động trong khi xử lý yêu cầu Ajax - Rails 3
- 19. Trình lập lịch biểu tác vụ cấp đồng thời có giới hạn (với nhiệm vụ ưu tiên) xử lý các tác vụ được gói
- 20. Rails 3 - Xử lý tin nhắn đến (Cho phép người dùng trả lời thông báo email)
- 21. Rails 3: respond_with lỗi trên trình trợ giúp URL không xác định
- 22. Thư viện xử lý ảnh Ruby/Rails
- 23. Rails 3, Chỉ xem định dạng ngày?
- 24. hướng màn hình xử lý mảnh với các tab trong thanh tác vụ
- 25. Xử lý lỗi trong kiến trúc 3 lớp
- 26. Rails 3.1 trình xử lý mẫu
- 27. Rx và tác vụ - hủy tác vụ đang chạy khi tác vụ mới được sinh ra?
- 28. Thêm Tác vụ tùy chỉnh trong Rails quản
- 29. Có nên sử dụng CruiseControl.NET để xử lý các tác vụ không liên quan đến nguồn xây dựng không?
- 30. Rails 3 Xác thực: presence => false
Tôi hiểu. Cảm ơn! +1 – Ben