43

Ich habe den folgenden Code in einem Rails-Controller:Wie wird eine Rails-Benachrichtigung bei Umleitung angezeigt?

flash.now[:notice] = 'Successfully checked in' 
redirect_to check_in_path 

Dann in der/check in Sicht:

<p id="notice"><%= notice %></p> 

Allerdings ist die Ankündigung nicht angezeigt. Funktioniert perfekt, wenn ich in der Steuerung nicht umleiten: obwohl ... nicht nur ein Rendering dieser Aktion

flash.now[:notice] = 'Successfully checked in' 
render action: 'check_in' 

ich eine Umleitung benötigen. Kann ich nach der Weiterleitung einen Hinweis erhalten?

Antwort

89

Entfernen Sie die ".now". So schreiben Sie einfach:

flash[:notice] = 'Successfully checked in' 
redirect_to check_in_path 

Die .now speziell verwendet werden soll, wenn Sie gerade machen und nicht umgeleitet werden. Bei der Weiterleitung darf das .now nicht verwendet werden.

+0

Perfekt! Vielen Dank. Es lässt mich noch 6 Minuten warten, um die Antwort aus irgendeinem Grund zu akzeptieren ... –

20
redirect_to new_user_session_path, alert: "Invalid email or password" 

anstelle von :alert können Sie :notice

verwenden

9

anzuzeigen Oder Sie können es in einer Zeile tun.

redirect_to check_in_path, flash: {notice: "Successfully checked in"} 
+0

@ JayEl-Kaake welche Ruby-Version benutzt du? – etlds

+0

Es war vor einer Weile, also bin ich mir nicht sicher ... Ich werde meinen Kommentar redact, da es so aussieht, dass es funktionieren sollte. –

+1

Pfad, Flash: {Hinweis: ... scheint wie Rails 3, während Pfad, Warnung: ... ist Rails 4+ –

3

Ich hatte das gleiche Problem, und Ihre Frage Mine gelöst, weil ich in der/check in Ansicht aufgenommen vergessen hatte:

<p id="notice"><%= notice %></p> 

In der Steuerung nur eine einzige Zeile:

redirect_to check_in_path, :notice => "Successfully checked in"    
+0

Ihr ist ein anderes Problem.Ich hatte das '<%= notice %>' Tag, einfach nichts kam auf –

3

Dies wird auch funktionieren

redirect_to check_in_path, notice: 'Successfully checked in'

1

Wenn Sie Bootstrap verwenden, zeigt dies eine gut formatierte Flash-Nachricht auf der Seite an, die das Ziel Ihrer Weiterleitung ist.

In Ihrem Controller:

if my_success_condition 
    flash[:success] = 'It worked!' 
else 
    flash[:warning] = 'Something went wrong.' 
end 
redirect_to myroute_path 

Ihrer Ansicht:

<% flash.each do |key, value| %> 
    <div class="alert alert-<%= key %>"><%= value %></div> 
<% end %> 

Dies wird HTML erzeugen wie:

<div class="alert alert-success">It worked!</div> 

lieferbare Bootstrap Alarm Arten finden Sie unter: http://getbootstrap.com/docs/4.0/components/alerts/

Referenz: https://agilewarrior.wordpress.com/2014/04/26/how-to-add-a-flash-message-to-your-rails-page/

Verwandte Themen