2012-05-12 48 views
0

我是Rails和Mongoid的新手。我正在嘗試創建一個登錄頁面。問題是如果有用戶名或密碼錯誤,我無法發出錯誤消息。以下是我的代碼。Mongoid的Rails:認證失敗時產生錯誤

型號user.rb

def self.authenticate(login, pass) 

if user = first(:conditions => {:username => login}) 

    return user if user.password==(pass) 

end 

    return false 

end 

控制器user_auth.rb

​​

查看login.html.erb

<% form_for(@user,:url => { :action => "login" }) do |d| %> 
    <% if @user.errors.any? %> 
    <div id="error_explanation"> 
    <%= pluralize(@user.errors.count, "error") %> 

    <ul> 
    <% @user.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
    <% end %> 
    </ul> 
    </div> 
<% end %> 

<p> Your Name: <%= d.text_field :username %><br /> </p> 
<p> Password: <%= d.password_field :password %><br/></p> 
<p><%=d.submit "Login" %></p> 
<% end %> 

回答

0

看來,在驗證失敗,實例化一個新的用戶不帶參數「@user = User.new()」,然後查找@ user.errors。這是一個猜測,你的新用戶默認沒有設置任何錯誤(爲什麼要這麼做?)。從你的問題陳述中,很明顯你的錯誤情況沒有正確傳達。在你的控制器中設置@errors並在你的視圖中檢查@errors而不是通過新的用戶實例添加間接性會更清晰和明顯。