2011-07-25 32 views
20

Trong Rails của tôi 2.3.8 ứng dụng tôi đã có một mã rescue_from cho trường hợp ngoại lệ, mà được ném trong hành động javascript:Rescue_from cho javascript yêu cầu

rescue_from ::Exception, :with => :show_js_errors 

... 

def show_js_errors exception 
    if request.format == :js 
    flash[:error] = 'some error occured' 
    render :update do |page| 
     page.redirect_to({:controller => '/home', :action => :index}) 
    end 
    else 
    # use default error handling for non-JS requests 
    rescue_action_without_handler(exception) 
    end 
end 

Vì vậy, người dùng của tôi nhận được một thông báo lỗi, nếu một cuộc gọi ajax chạy vào một lỗi. Trong Rails 3, tôi không thể đơn giản gọi xử lý lỗi mặc định, bởi vì phương thức "without_handler" không tồn tại nữa.

cập nhật doh

Tôi đăng này sau 3 giờ tìm kiếm, nhưng chỉ 30 phút sau khi đăng tôi tìm thấy một giải pháp bản thân mình.

Chỉ cần tăng lại ngoại lệ.

Vì bạn đang trong quá trình xử lý lỗi, không xử lý thêm được thực hiện với ngoại lệ này.

+0

Cảm ơn bạn đã đăng giải pháp của mình. –

+0

Tks dude! bạn đã giúp tôi: P – danilodeveloper

+0

Bản địa hoá thành không có câu hỏi nếu câu trả lời là một nửa số đó – random

Trả lời

1

Chỉ cần khắc phục ngoại lệ.

def show_js_errors exception 
    if request.format == :js 
    flash[:error] = 'some error occured' 
    render :update do |page| 
     page.redirect_to({:controller => '/home', :action => :index}) 
    end 
    else 
    raise # << 
    end 
end 

http://simonecarletti.com/blog/2009/11/re-raise-a-ruby-exception-in-a-rails-rescue_from-statement/ đồng tình:

rescue_from ActiveRecord::StatementInvalid do |exception| 
    if exception.message =~ /invalid byte sequence for encoding/ 
    rescue_invalid_encoding(exception) 
    else 
    raise 
    end 
end 

[...] Các ngoại lệ được rethrown một cách chính xác nhưng nó không được đánh bắt [sic] bởi cơ chế giải cứu tiêu chuẩn Rails và trang ngoại lệ chuẩn không được hiển thị.

+1

Meta-commentary: Tôi đăng bài này bởi vì, tốt, không ai khác có. – michaelb958

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