2011-03-24 2 views
2

레일 3을 사용 중이고 컨트롤러에 "삽입"작업이있는 ajax 양식 (예 : remote => true)이 있습니다.rails 3 - ajax 양식 제출 후 페이지에 머물러 있지만 "플래시"표시

내가 원하는 것은 사용자가 색인 페이지에 머물러 있지만 컨트롤러에 "삽입"작업으로 설정된 플래시 메시지를 표시 할 수 있어야한다는 것입니다.

def insert 
    begin 
    # perform insert of stuff 
    flash[:success] = "Successfully..." 
    rescue 
    flash[:error] = "failed ..." 
    end 
    render :nothing => true 
end 

이 (index.html.erb에) 형태로 제출 할 수 있으며 해당 페이지에서 사용자를 유지하지만 플래시 메시지가 표시되지 :

현재 내 "삽입"액션은 같은 것을한다. 플래시 메시지를 표시하려면 어떻게합니까? (그것은 렌더링과 관련이 있다고 추측합니다 : 아무것도 아니지만 서버 로그에 "누락 된 템플릿"오류가 있습니다.)

답변

4

당신은 자바 스크립트 응답해야합니다 : 형태로 오류 메시지를 표시하기 위해 플래시를 사용

def insert 
    begin 
    # perform insert of stuff 
    flash[:success] = "Successfully..." 
    rescue 
    flash[:error] = "failed ..." 
    end 
end 


# insert.js.erb 
$('#flash').html(<%= flash[:notice].to_json %>); 

확실히 불규칙한 행동입니다. 오류 메시지가있는 양식 내의 요소를 업데이트하거나 양식을 완전히 바꾸는 것이 좋습니다.

+0

플래시는 실제로 양식과 관련된 오류 메시지를 나타내지 않고 대신 데이터베이스에 삽입하는 동안 오류가 발생했음을 사용자에게 알리기위한 것입니다. – codecraig

관련 문제