2017-02-19 172 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