it-swarm.com.de

Wie zeige ich einen Rails Flash-Hinweis bei Weiterleitung an?

Ich habe den folgenden Code in einem Rails Controller:

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

Dann in der Ansicht/check_in:

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

Der Hinweis wird jedoch nicht angezeigt. Funktioniert perfekt, wenn ich im Controller nicht umleite:

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

Ich brauche allerdings eine Umleitung ... nicht nur ein Rendering dieser Aktion. Kann ich nach der Umleitung einen Flash-Hinweis erhalten?

56
at.

Entfernen Sie die ".now". Also schreibe einfach:

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

Die .now soll speziell verwendet werden, wenn Sie nur rendern und nicht umleiten. Bei der Umleitung darf die .now nicht verwendet werden.

107
Rebitzele
redirect_to new_user_session_path, alert: "Invalid email or password"

anstelle von :alert Sie können :notice

anzuzeigen

34
Tauqeer Ahmad

Oder Sie können es in einer Zeile tun.

redirect_to check_in_path, flash: {notice: "Successfully checked in"}
16
etlds

Wenn Sie Bootstrap verwenden, wird auf der Seite, die das Ziel Ihrer Umleitung ist, eine gut formatierte Flash-Nachricht angezeigt.

In Ihrem Controller:

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

Ihrer Ansicht nach:

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

Dies erzeugt HTML wie:

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

Informationen zu verfügbaren Bootstrap Warnungsstilen 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/

5
Jon Schneider

Das wird auch funktionieren

redirect_to check_in_path, notice: 'Successfully checked in'

5
Seifer

Ich hatte das gleiche Problem, und Ihre Frage hat meine gelöst, weil ich vergessen hatte, Folgendes in die Ansicht/check_in aufzunehmen:

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

In der Steuerung nur eine einzige Zeile:

redirect_to check_in_path, :notice => "Successfully checked in"             
2
Florencio Lugo