有两方面的验证:直接在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
谢谢,我会同时做到这一点 –