2013-09-02 2 views
0

JSON 응답 후 명확한 플래시 통지를 레일, 내 컨트롤러에서 나는이 같은 통지를 플래시 :내가 컨트롤러에 JSON 요청을 보낼 각도 사용하고

flash[:notice] = "Toon has been tagged" 

내가 JSON 응답을 반환하는 내 rabl 템플릿을 사용하고자하면

object @toon 
attributes :id, :uuid, :get_tag_string 
if flash 
    node(:flash) do |f| 
    flash.each do |k, v| 
     { :msg => v, :name => k } 
    end 
    end 
end 
attributes :errors 

내 각 코드는 응답을 처리하고 올바르게 플래시 통지 내용을 표시 : 또한이 같은 내 플래시 통지 내용을 포함한다. IS를 flash.clear 전화

 <% flash.each do |key, value| %> 
     <div class="row-fluid"> 
      <div class="span8 offset1"><%= content_tag(:div, value, class: "alert alert-#{key} center")%></div> 
     </div> 
     <% end %> 

나는이를 제거하거나 내 컨트롤러에 after_filter을 할 수있는 : 페이지가 플래시 메시지 때문에 내 레이아웃보기에서 다음 코드로 다시 표시됩니다 새로 그러나 여기에 문제가 온다 이것을하는 더 나은 방법이 있습니까?

고맙습니다!

답변

1

내 컨트롤러 :

답변 주셔서 감사 아서 프랭클의 flash.now으로 해결, 메시지를 손에 당신의 방법을 좋아

1

레일이있는 angularjs도 사용하고 있습니다. 서버 (레일)에서 오류 메시지를 처리하는 방법은 각도 경로 변경 이벤트를 사용하는 것입니다. 서버의 플래시 메시지를 다루고 있기 때문에 실제로는 같은 개념입니다. 내 주요 각도 컨트롤러에서 예를 들어, 내가 (귀하의 경우 플래시 메시지) 오류를 표시 내 각 응용 프로그램 I 변수와 함께 NG 쇼를 사용에서

,

<div ng-show="showMessages" class="alert"> 
    {{myMessages}} // obviously here you may have an ng-repeat or similar 
</div> 

나는 $ scope.showMessages를 설정하고 (true 또는 false). 이 시점에서 동일한 문제입니다. 내 컨트롤러에서 다음 콜백을 사용하여 경로가 변경된시기를 확인합니다. 변경되면 $ scope.showMessages를 false로 설정할 수 있습니다.

$scope.$on('$routeChangeStart', function (scope, next, current) { 
    $scope.showMessages = false; 
} 

나는 또한 내가 메시지가 "이 단지 다음 페이지에이 보여"제어하는 또 다른 VAR을 추가하여 다음 페이지 -에 나올 할 시간을 처리하기 위해이 routeChangeStart 이벤트를 사용합니다.

저는 개인적으로 플래시 메시지를 지우는 데 서버로 돌아 가지 않을 것입니다. "여분의 왕복 여행을 강요 당하지는 않지만"비싸지는 것처럼 보입니다.

관련 문제