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):

Есть идеи?


person Alexander Gorg    schedule 18.07.2017    source источник


Ответы (1)


Вы можете избавлять_от любых исключений, кроме ошибок сервера, используя метод 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

Это будет читать файл как двоичный файл, а не как текст.

person Pradeep Sapkota    schedule 18.07.2017