albums_controller.rb의 모든 예외 :캐치 레일 컨트롤러의 before_action
lass AlbumsController < ApplicationController
before_action :set_album, only: [:show, :edit, :update, :destroy]
def destroy
if @album.destroy
redirect_to albums_url, notice: 'Album was successfully destroyed.'
else
redirect_to albums_url, error: 'Album destroy failed.' # _DEST_
end
end
private
def set_album
@album = Album.find(params[:id]) # _FIND_
end
end
나는 Album.find()
에 대한 예외를 잡을 싶습니다. this에 따르면 나는 추가 :
rescue_from Exception, with: :flash_error
# private
def flash_error
flash_message :error, 'Something went wrong..' # _FLASH_
end
나는 같은
_FIND_
,
_FLASH_
,
_DEST_
위의 일부를 표시하고 그 순서대로 모두 통과하고 싶습니다. 방아쇠를 당기기 위해 존재하지 않는 앨범을 삭제하려고했습니다. 앨범/(: id) (내가 삭제하려고 시도한 URL)에 대한 URL이있는 빈 페이지가있어서
_FLASH_
부분에 붙어 있다고 가정합니다.
destroy
동작 (다른 컨트롤러 동작에 대한 다른 예외도 catch 할 수 있으므로 rescue_form이라는 원래의 동작)을 호출하려면 어떻게해야합니까? 그리고 Something went wrong
보다 더 좋은 메시지를 얻으려면 어떻게해야합니까?
주요 목표는 올바른 페이지 (_DEST_
으로 지정)로 리디렉션하는 것이므로 더 나은 방법이 될 수 있습니다.
'rescue_from ActiveRecord :: RecordNotFound with : : rescue_action'을 사용 해보세요 : –
많은 변화가 없으며 여전히'_DEST_'에 계속되지 않습니다 – pawel7318