2012-05-12 21 views
0

RailsとMongoidの初心者です。私はログインページを作成しようとしています。問題は、ユーザー名またはパスワードのエラーがある場合にエラーメッセージを出すことができないことです。以下は私のコードです。Rong with Mongoid:認証が失敗したときにエラーを生成します。

モデル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

認証失敗時に、あなたは新しいをインスタンス化すること表示されますargsを持たないユーザーに "@user = User.new()"と入力し、@ user.errorsを探します。新しいユーザーがデフォルトでエラーを設定していないと思われます(なぜそうでしょうか?)。問題のステートメントから、エラー状態が正しく伝達されていないことは明らかです。あなたのコントローラに@errorsを設定し、新しいユーザインスタンスで間接参照を追加するのではなく、ビュー内の@errorsをチェックする方がより明確で明解になります。

関連する問題