2011-06-23 80 views

Trả lời

10

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.

+0

Tôi hiểu. Cảm ơn! +1 – Ben

0

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.

1

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.

0

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 
1

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.

Các vấn đề liên quan