2013-10-08 1 views
0

레일에서 ajax 요청 (양식에 remote : : true 설정)을 사용하여 리디렉션하려고합니다. 이것이 제가 가진 문제입니다. 컨트롤러에서 AJAX 호출 중 렌더링 또는 redirect_to 레일에 문제가 발생했습니다.

, 내가 가진 : 모델

def create 
    user = User.new 
    user.attributes = params[:user] 

    if user.save 
    if request.xhr? 
     flash[:notice] = "User successfully created" 
     render js: %('#{user_url(user.id)}') 
    end 
    else 
    if request.xhr? 
     render partial: "form" 
    else 
     render action: 'new' 
    end 
    end 
end 

, 뷰에서

class user 
    validates :total_amount, presence: true, numericality: {greater_than: 0} 
end 

, 자바 스크립트는 다음과 같습니다

$("#new_user").bind("ajax:success", function(evt, data){ 
if(data.length < 300){ 
    window.location.replace(data.replace(/['\s]/gi, '')); # on success rendering the url. 
    } 
    else { 
    $("#errors").html($(data)); # if there are any errors, i have a div tag around form, which will replace the form html 
    } 
}); 

내가 (제출에 그것을 클릭하면 아약스 요청입니다) 총 금액 (필요한) 사용자에 대해 0.0으로 남겨두고, 나는 예상 된 동작입니다 유효성 오류가 및 유효성 검사 오류가 표시됩니다, 이것은 javascript의 else 부분입니다). 이제 금액을 1.0으로 입력하고 제출을 클릭하십시오 (이 역시 아약스 요청입니다). 자바 스크립트에서 if 부분으로 이동하지 않습니다.

여기서 내가 뭘 잘못하고 있니?

답변

0

데이터 길이를 확인하는 대신 ajax:errorajax:success을 두 가지 콜백으로 사용해야합니다. 오류 콜백, 오류 리디렉션 성공 표시.

콜백 : https://github.com/rails/jquery-ujs/wiki/ajax

+0

그것의 발사'아약스 : 두 경우에 success'. 이유는 모르겠다. – Kumar

+0

전체 컨트롤러 동작 코드는 무엇입니까? – AJcodez

+0

컨트롤러 코드가 업데이트되었습니다. – Kumar

관련 문제