2011-08-21 43 views
0

我試圖實現更改密碼視圖。目前我正在測試如果我在密碼和password_confirmation中不匹配的情況下是否在表單上顯示紅色錯誤消息。我收到一條追溯說「驗證失敗:密碼與確認不符」,但我看不到任何基於自然形式的錯誤消息...設計密碼確認錯誤

另一個可能有用的小信息是我的User模型接受另一個模型的嵌套屬性(contact_info)。這些東西一切正常。

這裏是代碼的相關位。從我的模型:

class User < ActiveRecord::Base 
    devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable 
    ... 
end 

這裏是我的HAML視圖代碼:

= form_for @user do |user| 
    -if @user.errors.any? 
    #error_explanation 
    %h2= "#{pluralize(@user.errors.count, "error")} prohibited this user from being saved:" 
    %ul 
     - @user.errors.full_messages.each do |msg| 
     %li= msg 

最後,這裏是我的控制器位:

... 
if @user.update_attributes!(params[:user]) 
    format.html { redirect_to(users_url, :notice => 'User was successfully updated.') } 
    format.xml { head :ok } 
else 
    ... 

我得以驗證那些字段在傳入的參數中:

Parameters: {"user"=>{"last_name"=>"Jim", "first_name"=>"Dandy", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]" 

我懷疑我錯過了一些相當簡單的事情......但對於我的生活,我無法弄清楚它可能是什麼。

+0

是否控制器的其他區域說:別的 format.html {渲染:行動=> 「新」} format.xml {渲染:XML => @ user.errors,:狀態=>:unprocessable_entity} 結束了嗎? – jschorr

+1

是的。我想到了這一點......我會把答案放在下面...... – jaydel

回答

0

事實證明,真正缺少的是當前密碼 - 我只有密碼和password_confirmation字段,Devise也希望有一個current_password字段。

一旦我有了這個字段,我調用update_with_password而不是update_attributes,並且整個事情很好地結合在一起。

+0

解決這個問題的好工作。 – jschorr