2014-06-18 1 views
0

내가 사용하여 양식을 가지고 : 원격 => 폼 데이터가 있었는지, 내가 나타내는 경고 메시지를 표시 묶는하고 내 컨트롤러 코드에서

<%= form_for @expression, url: {controller: "expressions", action: "create"}, :remote => true do |f| %> 

... 

<% end %> 

사실 저장 여부.

def create 
    @expression = Expression.new(params[:expression]) 

    respond_to do |format| 
     if @expression.save  
     format.js { render :js => "alert('Expression details have been saved'); window.opener.document.location.reload(true); window.close();" } 
     else 
     format.js { render :js => "alert('Error. Please ensure that expression patterns are unique');" } 
     end 

    end 

    end 

양식 데이터가 데이터베이스에 성공적으로 저장되면 경고 메시지가 올바르게 표시됩니다. 그러나 어떤 이유로 (데이터베이스 제약 - Mysql2 :: 오류 : 중복 항목) 데이터를 저장할 수 없으면 아무 일도 발생하지 않습니다. 경고 메시지가 표시되지 않습니다.

원격 양식을 사용할 때 mysql 오류를 처리 할 수있는 방법이 있습니까?

귀하의 도움에 감사드립니다. 감사합니다

답변

1

Mysql2::Error: Duplicate은 ActiveRecord 유효성 오류가 아니라 예외입니다. 당신은 예외, 즉 잡기하여 처리 할 수있는 :

def create 
    @expression = Expression.new(params[:expression]) 

    respond_to do |format| 
    if @expression.save  
     format.js { render :js => "alert('Expression details have been saved'); window.opener.document.location.reload(true); window.close();" } 
    else 
     format.js { render :js => "alert('Error. Please ensure that expression patterns are unique');" } 
    end 
    end 

rescue ActiveRecord::RecordNotUnique 
    respond_to do |format| 
    format.js { render :js => "alert('Error..');" } 
    end 
end 

내 예제는 특정 예외가 있지만 rescue Exception

+0

Lovely..thanks 많은 예외를 잡을 수 있음을 잡는다. 나는 잠시 동안 이것으로 고투하고있다. – Kim