Rails number_field_tag检查至少一个不为零

时间:2016-11-25 07:56:00

标签: ruby-on-rails

我编写了以下代码来显示带有manny $scope.dyna = [ { "name": "parshuram", "age": 24 ,"void": true}, { "name": "Tejash", "age": 26,"void" : false } ]; <table> <tbody> <tr ng-repeat= "test in dyna"> <td>{{test.name}}</td> <td>{{test.age}}</td> <!-- I don't want to have to add this, the columns should be added dynamically --> <td>{{test.void}}</td> </tr> </tboody> </table>

的表单
number_field_tag

喜欢这个

enter image description here

如何确保至少有一个字段不为零?

Rails是否提供了一些神奇的功能?

1 个答案:

答案 0 :(得分:0)

验证有两个方面:直接在前端使用JavaScript或服务器端模型验证。

Rails没有任何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&#39;验证一个模型,而不是许多模型。如果其中有多个ActiveRecord-Model,我会为任何表单构建一个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