2017-07-18 237 views
0

我在加載圖像時遇到了路由錯誤,而有些丟失了。Rescue_from不能正常工作

你知道我只是想用默認的圖像圖標替換缺失的圖像,並抑制錯誤信息。

所以,我想

class ImagesController < ApplicationController 
     [...] 

     def index 
     images = Image.all 
     rescue_from ActionController::RoutingError, with: :image_route_error 
     end 

     [...] 
end 

然後我得到這個:

NoMethodError (undefined method `rescue_from' for #<ImagesController:0x007fe382227e38> 
Did you mean? rescue_handlers): 

任何想法?

回答

2

您可以使用rescue_from方法rescue_from除服務器錯誤以外的任何其他異常。你在你的ApplicationController中寫下這個方法。

rescue_from ActionController::RoutingError do |exception| 
    if controller_name == "image" && action_name == "index" 
      render 'default_image_here', status: 200 
    else 
    render plain: 'Not found', status: 400 
    end 
end 

render 'default_image_here'您可以使用此:

render :text => open(image_url, "rb").read, status: 200 

這將閱讀文件爲二進制形式而非文字。