Flash-Hash von einem Controller an einen anderen Controller übergeben

Ich habe eine Methode create in einem Controller und am Ende dieses Controllers möchte ich redirect_to einen anderen Controller/View. Wie kann ich einen flash [: notice] anzeigen, nachdem der erste Controller fertig ist und die nächste redirect_to Ansicht gerendert wird?

Hier ist der Code im ersten Controller:

if @list.save
        redirect_to root_path, :notice => "Created!"

Ich habe auch bemerkt, dass es auch hier nicht funktioniert:

if @list.save
    redirect_to root_path, :alert => "Created!"

Hier ist die Routen-Datei:

root :to => 'sessions#new'
1
hinzugefügt bearbeitet
Ansichten: 1

3 Antworten

Um eine Flash-Nachricht über eine zusätzliche Anfrage zu speichern, können Sie flash.keep verwenden - von die Flash-Sektion auf Schienen Guides :

Nehmen wir an, diese Aktion entspricht root_url, aber Sie wollen alle   fordert hier an, zu UsersController # index umgeleitet zu werden. Wenn eine Aktion   setzt den Flash und leitet hier um, die Werte würden normalerweise verloren gehen   wenn eine andere Weiterleitung stattfindet, aber Sie können 'behalten' verwenden, um es zu erstellen   persistent für eine andere Anfrage.

Clarification: This solution only applies if you're losing the flash due to a double redirect.

4
hinzugefügt

In welcher Version von Rails sind Sie? Die von Ihnen verwendete Syntax ist eine relativ neue Funktion. Versuche es auf die lange Strecke:

flash[:notice] = 'Created'
redirect_to root_path
0
hinzugefügt
versuchte dies. nicht sicher, warum es auch so nicht funktionieren würde.
hinzugefügt der Autor locoboy, Quelle

Hast du das versucht?

redirect_to(whatever_path, :notice=>"hello world")

Also, you can use :error

redirect_to(whatever_path, :error=>"hello error")
0
hinzugefügt
ja das probiert aber immer noch nicht sicher warum es nicht auftaucht.
hinzugefügt der Autor locoboy, Quelle
Ich habe dies in der application.html <% flash.each do | key, value | %> <div class = "Warnmeldung - <% = Schlüssel%>"> <% = Wert%> </div> <% Ende%>
hinzugefügt der Autor locoboy, Quelle
Gibt Ihr Layout oder Ihre Ansicht den flash [: notice] oder flash [: error] aus?
hinzugefügt der Autor maček, Quelle