2012-04-01 12 views
4

In einer Steuerung zeigt nicht, dass ichRails Flash-Mitteilung in redirect_to

flash[:error] = "Message" 
redirect_to :root 

Die haben: root durch einen anderen Controller gehandhabt wird, hat die Ansicht

<% if flash[:error] %> 
    <p><%= flash[:error] %></p> 
<% end %> 

Aber nichts gezeigt wird. I eingefügt <% = debug controller.session%>, hier ist was ich bekam

"flash"=>#<ActionDispatch::Flash::FlashHash:0x2e79208 @used=#<Set: {}>, @closed=false, @flashes={}, @now=nil>} 

Was habe ich falsch gemacht?

+1

Was Ihre Routen tut Datei und die Controller-Aktion, die root aussehen wird? Ich habe versucht, das zu replizieren, aber es hat für mich funktioniert, also werden diese vielleicht helfen, es herauszufinden. –

+0

Jeff, vielen Dank für das Hinweis auf die Route Problem. Es stellt sich heraus, dass mein Kumpel eine weitere Weiterleitung für den root_handler vorgenommen hat. Nachdem ich flash.keep vor der zweiten Weiterleitung hinzugefügt habe, wird der Fehler angezeigt. – kimkunjj

+0

hatte gerade das gleiche Problem in einer Post-Aktion, haben Sie es kimkunji lösen? – Moh

Antwort

5

Überprüfen Sie, dass stackoverFlow Frage: Rails: redirect_to with :error, but flash[:error] empty.

Da nur in dem Rails-API angegeben: Bekanntmachung und: alert ist standardmäßig als Flash-Hash-Wert angewandt. Wenn Sie die festlegen müssen: Fehlerwert, Sie kann es wie folgt tun:

redirect_to show_path, :flash => { :error => "Insufficient rights!" } 
+0

Ich habe deinen Code ausprobiert. Funktioniert immer noch nicht, auch nachdem ich von gewechselt habe: Fehler zu: Alarm. – kimkunjj

4

Ich weiß, das spät ist, aber ich hatte das gleiche Problem in Rails 4. Wenn Sie den _url Helfer verwenden in die redirect_to, wird die Flash-Mitteilung kommen durch:

def update_post 
    respond_to do |format| 
     if @post.update(post_params) 
      format.html { redirect_to show_post_meta_url, notice: 'Post was successfully updated.' } 
     else 
      format.html { render action: 'edit_post' } 
     end 
    end 
end 

Hope this jemand hilft.

2

Dies ist, wie ich Warnungen und Hinweise in meinem Controller

redirect_to user_attachments_path, notice: "The file #{@attachment.name} has been uploaded." 

Verwenden flash[:error] oder flash[:notice], wenn Sie machen über die aktuelle Seite und nicht die Umleitung wie hier angezeigt werden:

if params[:attachment].nil? 
     flash.now[:alert] = "No file found!" 
     render "new" 
else