2009-11-22 3 views
3

나는 내가 디스플레이를 doesnot 문의 양식에 플래시 메시지를 표시 할 때 내 컨트롤러플래시 [: 공지] 레일에서 작동하지

def create 
    @message = Message.new(params[:message]) 
    @message.message = h(@message.message) 
    if @message.save 
     flash[:message] = "Message Sent. Thank You for Contacting Me" 
    else 
     flash[:message] = "OOps Something went wrong" 
    end 
    redirect_to :action => 'contact' 
    end 

에 다음 코드 조각이있다. 나는 가능한 해결책을 찾았지만, 그들은 작동하지 않는 것 같습니다. 어떤 아이디어가 잘못 될까요?

+1

이것은 아마도 오타 일 뿐이지 만 처음에는 분명하지 않은 것을 확인하지 않아도됩니다. 제목에서 flash [: notice]라고 말하면 메서드에서 플래시 [: message]를 설정합니다. 당신이보기에 플래시 [: 통지]를 기다리고 있습니까? – mtyaka

+0

보기에 어떤 코드를 사용하여 메시지를 표시하고 있습니까? –

+0

죄송합니다. 보기에는 플래시 [: 메시지]도 있습니다. – Shiv

답변

4

플래시 해시에는 다음 렌더링까지 저장할 메시지 집합이 포함될 수 있습니다. 스캐 폴드는 일반적으로 알림 메시지에 flash [: notice]의 내용을 사용합니다. 비계를 사용하여 웹 페이지를 생성하지 않은 경우보기에 <%= flash[:notice]%>을 추가해야합니다.

컨트롤러에 [: 메시지]가 깜박입니다. 보기에 <%= flash[:message]%> 어딘가가 포함되어 있지 않으면보기의 어느 위치에도 나타나지 않습니다.

가능한 해결 방법은 컨트롤러에서 flash[:message]에서 flash[:notice]까지의 모든 항목을 변경하거나이 작업이 렌더링 할 수있는 모든보기에 <%= flash[:message]%>을 추가하는 것입니다.

당신이 그것을 시도하지 않았을,하지만 난 당신이라면 당신은 당신이 알고있는 브라우저에 "플래시 해시가 비어"를 참조하면 내가

<% if flash[:messsage].blank? %> 
    <h1> flash hash is blank </h1> 
<% end %> 

처럼 선 아래로 뭔가를 할 것이라고 말을하지

+0

필자는 내 견해로는 그것이 작동하지 않았다. 또한 다음 번 가능성으로 플래시 [: 메시지]를 플래시 [: notice]로 바꾸고보기에

<%= flash[:message]%>
을 넣었지만 그 dint도 작동한다. 다른 제안? – Shiv

+0

리디렉션 후에도 플래시 메시지가 계속 유지된다고 생각했습니다. 내가 틀렸다면 나를 바로 잡아라. – Shiv

+0

리디렉션으로 인해 삭제 될 수 있습니다. 어디서나 리디렉션을 표시합니까? – EmFi

2

그것이 무엇을 의미하는지.

편집 : -

워드 프로세서에서 뭔가 "기억 단지 :. 그들은 다음 작업이 수행 된 시간에 의해 사라질 것" 귀하의 컨트롤러에서 이것을 시도하십시오

flash.keep(:message) #keep the flash entry available for the next action 
+0

예,하지만 그게 내가 이해가 안되는 이유는 그것이 지워지고있다? – Shiv

+0

아니요. – Shiv

16

컨트롤러가 action => 'contact'로 리디렉션 중입니다. 해당 작업에 대해 렌더링되는 템플리트에 플래시 알림 출력이 있는지 확인하십시오.

<%= flash[:message] %> 

또한 render : action ... vs redirect_to : action ...을 사용하고 싶을 수도 있습니다. 자신에게 요청을 저장하십시오.

+0

예. flash.now [: message] = "Blah Blah"를 사용하면 렌더링 동작과 함께 작동합니다. 하지만 호기심 때문에 리디렉션 작업이 왜 효과가 없었는지 궁금합니다. 그리고 당신이 언급 한 솔루션은 contact.html.erb에 있습니다. – Shiv

+6

글쎄 flash.now는 액션의 현재 상태에 대해서만 작동합니다. 일단 액션이 해제되면 해제됩니다. 그래서 플래시 [..] 당신이 다른 요청에 그것을 필요로하는 경우 사용하려는 것입니다. 귀하의 리디렉션 이후 플래시 [..]가 작동하지 않습니다. 귀하의 앱에 세션 문제가 있을지 궁금합니다. – nowk

+0

흥미 롭군요, 세션 문제 일 수 있습니다. 저를 살펴 봅시다. – Shiv

관련 문제