1
我使用了一個非常有用的gem ClientSideValidations,它適用於除了條件驗證之外的所有應用,其中條件是在另一個字段中存在值。使用客戶端驗證驗證另一個字段中是否存在值
我有一個複選框字段(:has_dog),如果選中結果將驗證文本字段(:dog_name)。現在,這一切都很好,並且與服務器端驗證一樣,但是在執行客戶端時不會驗證。
有條件的驗證工作的客戶端的其他領域的地方說我硬代碼真或做別的服務器端,但只是不是如果結果需要來自同一形式的領域。
類
class PetCare < ActiveRecord::Base
validates :dog_name, presence: true, if: :has_dog?
end
表
<%= form_for @pet_care, validate: true do |f| %>
<%= f.label :has_dog %>
<%= f.check_box :has_dog %>
<br />
<%= f.label :dog_name %>
<%= f.text_field :dog_name, validate: true %>
<% end %>
所以客戶端 「dog_name」 沒有得到驗證,即使 「has_dog」 是真實的。 (儘管它在服務器端工作)。我嘗試過每種名稱,表單類型的組合。它只是沒有看到「has_dog」值。我接近於爲此寫了一個自定義驗證器,但是看起來這對於一件非常簡單的事情來說是過分的。有沒有其他人有這個,有沒有解決方案?
非常感謝回覆,我認爲我的錯誤是我使用的示例是密碼。我會更新我的帖子,以反映它不是關於密碼,而是基於驗證的客戶端條件驗證機制,因爲我有它的服務器端。關鍵在於,根據一個字段的值(這種情況是true還是false),應該驗證第二個字段是否有效。 –