2012-12-17 44 views
0

我必須檢查表單中是否存在confirm_password輸入框。
如果它存在, 我需要這樣做:
檢查欄中是否存在輸入框

validates :password,:confirmation=>true 

其他

組確認爲假。

詳細解釋了這個問題:

我使用client_side_validation寶石該款機型驗證轉換爲JavaScript表單驗證軌道。

有一個小問題,因爲登錄和註冊屬於同一個表,他們都有一個模型。現在,當我在模型中添加此進行驗證:

validates :password,:confirmation=>true 

它不會讓我登錄的原因是存在有關login.It沒有confirm_password輸入框只能在註冊工作,驗證將成爲假。

+0

爲什麼你不知道confirm_password框是否存在?你的應用不是在創建視圖嗎?也許發佈一些現有的代碼將在這裏揭示一些... – PinnyM

+0

其實我有兩種形式一個登錄和一個註冊...我需要在模型中區分它們,因爲它們通過相同的模型進行驗證。 –

+0

他們發佈到相同的控制器操作?如果是這樣,爲什麼?如果不是,則讓控制器在操作中相應地設置模型。 – PinnyM

回答

1

假設一個模型,用戶在users_controller添加@user.is_signup = true的註冊行爲。在您的用戶模型中添加attribute_accessor :is_signupvalidates :confirm_password, :confirmation => true, :if => :is_signup

+0

我會試試..這一個 –

1

在您的註冊表單中,您可能會有一個隱藏字段在表單中傳遞。如果該屬性存在並返回true,則驗證密碼確認的存在。

註冊表格,表單標籤內的某處:

<%= form.hidden_field :is_signup, true %> 

型號:

attribute_accessor :confirm_password 
attribute_accessor :is_signup 

validates :confirm_password, :presence => true, :if => :validate_confirm_password? 

def validate_confirm_password? 
    is_signup 
end 
+0

現在我得到這個錯誤未定義的方法'鍵?'對於註冊表中的零:NilClass。這就是我對模型attribute_accessor所做的:is_signup驗證:password,:confirmation => true,:if =>:validate_confirm_password? def validate_confirm_password? is_signup 結束 –

+0

對不起,我的第一個回答有點吸引人,回想起來。比這更簡單。嘗試最重要的答案。 –