有兩方面的驗證:直接在JavaScript的前端,或服務器端模型驗證。
Rails沒有任何JavaScript功能,您必須自行使用JavaScript,例如JavaScript。
<script type='text/javascript'>
$('form').submit(function(e) {
var foundQuantity = false;
$('input[type*=quantity]').each(function() {
if ($(this).val() > 0) { foundQuantity = true };
]);
if (!foundQuantity) {
e.preventDefault();
// Display some error somewhere
$('.error-field').html("<div class='alert'>Please select at least one</div>");
}
});
對於服務器端:我看到這是一個很多模型的組合形式?你有擁有怪物的父母模型嗎?你也可以只在一個模型上使用Rails的驗證,而不是在許多模型上。如果存在多個ActiveRecord模型,我會爲任何表單構建Form模型,例如:
class MonsterForm
include ActiveModel::Model
attr_accessor :monsters
validate :monster_quantity
def monster_quantity
if monsters.length == 0 || monsters.none?{|m| m.quantity > 0 }
errrors.add(:monsters, "Need to have at least one..."
end
end
end
謝謝,我會同時做到這一點 –