2012-08-15 3 views
1

를 표시하는 오류 '아이디 = xxx를 가진 항목을 찾을 수 없습니다',이 같은 제품 ID를 사용하여 제품 정보를 얻을 수 있습니다레일 : 재정의 내 프로그램에서 플래시 오류 메시지가

# Show the product info. 
def show 
    @product = Product.find params[:id] 

    if [email protected] 
     redirect_to products_path, :alert => 'Product not found!.' 
    end 
end 

경우 제품이 존재하지 않습니다. 레일 오류가 있습니다. id = xxx 인 제품을 찾을 수 없습니다. 이 오류 메시지를 무시하고 오류를 플래시 경고로 표시하고 싶습니다.

어떻게하면됩니까? 미리 감사드립니다.

+0

변경 사항이 하나만있는 경우 컨트롤러에서 begin rescue를 사용할 수 있습니다. –

답변

4

당신은 Product.try(:find, params[:id]) 또는 Product.find_by_id params[:id]를 작성하고 제품이

+0

실제로! find_by_id는 예외를 throw하지 않습니다. 그렇다면 제품을 확인해야합니다 ... 제품 ... 고마워요. – htaidirt

1

찾기 방법은 항상 ResourceNotFound을 제기 예외 대신에 발견되지 않는 경우 전무를 얻을 수 있습니다. 당신은이 작업에 대한 사용자 지정 오류 메시지를 원하는 경우 , 당신은 그런 식으로 수행 할 수 있습니다 find 방법은 아무 것도 발견되지 않은 경우 오류를 높이기 위해 지정

def show 
    @product = Product.find_by_id params[:id] 

    if @product.blank? 
     redirect_to products_path, :alert => 'Product not found!.' 
    end 
end 
+0

감사합니다. Emrah. find_by_id가 정상적으로 작동하면 확인해야합니다. if! product ... – htaidirt

0

. ARel 스타일을 사용할 수 있습니다.

@product = Product.where(:id => params[:id]).first 

빈 결과에 nil이 반환됩니다.

0
def show 
    begin 
     @product = Product.find params[:id] 
    rescue ActiveRecord::RecordNotFound => e 
     redirect_to products_path, :alert => 'Product not found!.' 
    end 
end 

항상 특정 예외를 구조하려고하면 원하는 결과를 얻을 수 있습니다. @Emrah가 find 메서드를 언급하면 ​​주어진 id를 가진 레코드가 없을 때 ActiveRecord::RecordNotFound을 발생시킵니다.

관련 문제