2017-01-12 29 views
1

Ich habe ein einfaches E-Mail-Eingabeformular auf meiner Homepage, und wenn die E-Mail des Abonnenten gespeichert wird, möchte ich sie zurückleiten und ein Bootstrap-Modal mit einigen Informationen anzeigen. Ich habe darüber nachgedacht, eine flash[:success] an die Ansicht zu senden und dann zu sagen: "Wenn flash[:success], Anzeige modal", aber ich bin mir nicht sicher, was der richtige Weg ist, das modale tatsächlich auszulösen.Bootstrapmodal nach erfolgreicher Erstellungsaktion anzeigen

/controllers/subscribers_controller.rb:

def create 
    @subscriber = Subscriber.new(subscriber_params) 
    if @subscriber.save 
    # Send info to view (a flash?) saying to show modal 
    redirect_to root_path 
... 

Wenn es darauf ankommt:

  • Die Aussicht ist /views/pages/home.html.erb.
  • Wir können subscriber-success-modal (oder was auch immer am einfachsten ist) für die modale ID verwenden.
  • Wir können subscriber_success_modal.html.erb für die Teilansicht mit Modal verwenden.
+1

Dies ist möglicherweise keine ideale Lösung, aber. Sie können eine Abfragezeichenfolge mit root_url wie '? modal = true' senden und dann in der Homepage JS verwenden, um die Abfragezeichenfolge present von modal = true zu prüfen und dann modal mit dem erforderlichen Code' modal.show() 'anzuzeigen. – Sajan

Antwort

0

wie Sie einen Benutzer werden Sie nicht die Instanzvariablen verwenden können, um die Daten zwischen den Anfragen zu teilen, für diese Sie Sitzung verwenden wie den Wert der Show modal Schlüssel zu speichern:

session[:show_modal] = true

und in der html-Datei "/views/pages/home.html.erb" können Sie die Session-Variable show_modal abrufen und können Modal entsprechend anzeigen.

+0

Danke. Was ist der einfachste Weg, das Modal tatsächlich anzuzeigen/auszulösen? Etwas wie das Folgende scheint nicht zu funktionieren. '<% if session [: show_modal] == Wahr%> <% = render" layouts/success_modal "%> <% end %>' Ich vermute, da ist ein JS beteiligt? –

+0

Bitte siehe oben. –

Verwandte Themen