2017-02-19 167 views
1

我试图在用户无法使用不正确的凭据登录时弹出警报。登录不会通过,但警报不会显示。Flash.alert无法在Ruby on Rails中工作

这是我在我的视图代码:

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

然后在我的控制,我有:

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 

我也试着做flash[:alert] = "Invalid name/password combination"但是,这并不为工作好。任何帮助表示赞赏。

回答

1

您可以改为使用flash[:notice]

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

而且在你看来,你可以用它显示:

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

所以这个作品!但是,通知显示时需要2次登录失败,有时当页面初始加载时,通知文本仍在那里。任何修复? – Frank

+1

将'flash [:notice]'放在'render'语句之前 – Shannon

+0

感谢您的帮助! – Frank

-1

为何会出现在年底结束两倍?

你试试这个:

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

那些最终的是必要的。我已经尝试过了,它不起作用 – Frank