2017-02-19 3 views
1

Ich versuche, eine Warnmeldung Pop-up zu haben, wenn der Benutzer nicht mit den falschen Anmeldeinformationen anmelden kann. Die Anmeldung wird nicht durchgeführt, aber die Warnung wird nicht angezeigt.Flash.alert funktioniert nicht in Ruby on Rails

Dies ist der Code, den ich in meiner Sicht haben:

<h2>The Maintenance Functions are restricted to authorized users only. Please login below.</h2> 
<%= form_tag(dirlogin_pageout_path, :controller => "dirlogin", :action => "pageout", :method => "post") %> 
<p> 
    <label for="name">User ID:</label><br> 
    <%= text_field_tag :userid, params[:userid] %> 
</p> 

<p> 
    <label for="password">Password:</label><br> 
    <%= password_field_tag :password, params[:password] %> 
</p> 

<%= submit_tag "login" %> 

Da ist in meinem Controller ich habe:

class DirloginController < ApplicationController 
    def pagein 
    end 

    def pageout 
    user = User.find_by_userid(params[:userid]) 
    if user and user.authenticate(params[:password]) 
     redirect_to maintenance_maintenancenav_path 
    else 
    render 'pagein' 
    flash.alert = "Invalid name/password combination" 
    end 
end 
end 

Ich habe auch versucht flash[:alert] = "Invalid name/password combination" zu tun, aber das funktioniert nicht als Gut. Jede Hilfe wird geschätzt.

Antwort

1

Sie können stattdessen flash[:notice] verwenden.

flash[:notice] = "Invalid name/password combination" 

Und Ihrer Ansicht nach können Sie es mit Anzeigen:

<%= flash[:notice] %> 
+0

So funktioniert das! Aber es dauert 2 fehlgeschlagene Logins, damit die Benachrichtigung angezeigt wird, und manchmal ist der Benachrichtigungstext vorhanden, wenn die Seite geladen wird. Irgendwelche Korrekturen daran? – Frank

+1

Platzieren Sie die 'flash [: notice]' vor Ihrer 'render' Anweisung – Shannon

+0

Vielen Dank für Ihre Hilfe! – Frank

-1

Warum gibt es am Ende doppelte Enden?

Sie tun dies versuchen:

flash.alert = "Invalid name/password combination" 
render 'pagein' 
+0

Diese Enden werden benötigt. Und ich habe das versucht und es funktioniert nicht – Frank