2017-02-19 5 views
1

J'essaie d'avoir une fenêtre d'alerte lorsque l'utilisateur ne parvient pas à se connecter avec les informations d'identification incorrectes. Le login ne passera pas mais l'alerte ne s'affichera pas.Flash.alert ne fonctionne pas dans Ruby on Rails

C'est le code que j'ai à mon avis:

<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" %> 

Puis, dans mon contrôleur je:

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 

J'ai aussi essayé de faire flash[:alert] = "Invalid name/password combination" mais cela ne fonctionne pas bien. Toute aide est appréciée.

Répondre

1

Vous pouvez utiliser flash[:notice] à la place.

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

Et, selon vous, vous pouvez l'afficher avec:

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

Alors cela fonctionne! Mais il faut 2 connexions échouées pour que l'avis apparaisse, et parfois le texte de l'avis est là quand la page se charge initialement. Des correctifs à cela? – Frank

+1

Placez le 'flash [: notice]' avant votre instruction 'render' – Shannon

+0

Nous vous remercions de votre aide! – Frank

-1

Pourquoi il doubles se termine à la fin?

-vous essayez ceci:

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

Ces fins sont nécessaires. Et j'ai essayé ça et ça ne marche pas – Frank