限制嵌套字段的最小计数

Limit Minimum Count of Nested Fields

本文关键字:嵌套 字段      更新时间:2023-09-26

我有一个父模型和子模型。

我想强制要求在创建一个新的父类时至少创建一个子类。

我正在使用nested_form gem,目前使用这个脚本来限制每条记录添加的子节点数量。

$(function() {
var fieldsCount,
  maxFieldsCount = 4,
  $addLink = $('a.add_nested_fields');
function toggleAddLink() {
$addLink.toggle(fieldsCount <= maxFieldsCount)
}
$(document).on('nested:fieldAdded', function() {
fieldsCount += 1;
toggleAddLink();
});
$(document).on('nested:fieldRemoved', function() {
fieldsCount -= 1;
toggleAddLink();
});  
// count existing nested fields after page was loaded
fieldsCount = $('form .fields').length;
toggleAddLink();
})

是否有一种方法可以让我也包括一个"最低"要求?比方说(1)孩子?如果只有(1)嵌套表单是可见的,基本上可以删除"remove link"。

这是我弄清楚的代码,如何确保至少有一个字段是根据其计数删除"Remove"链接

  $(function() {
  var fieldsCount,
  maxFieldsCount = 2,
  $addLink = $('a.add_nested_fields');
  var mfieldsCount,
  minFieldsCount = 0, // placed at 0 because first object is auto built from controller
  $removeLink = $('a.remove_nested_fields');
  function toggleAddLink() {
  $addLink.toggle(fieldsCount <= maxFieldsCount)
 }
  function toggleRemoveLink() {
  $removeLink.toggle(mfieldsCount <= minFieldsCount)
  }
  $(document).on('nested:fieldAdded', function() {
  fieldsCount += 1;
  toggleAddLink();
 });
 $(document).on('nested:fieldRemoved', function() {
 fieldsCount -= 1;
 toggleAddLink();
});
 $(document).on('nested:fieldRemoved', function() {
mfieldsCount -= 0;
toggleRemoveLink();
 });  
 // count existing nested fields after page was loaded
 fieldsCount = $('form .fields').length;
 toggleAddLink();
  mfieldsCount = $('form .fields').length;
  toggleRemoveLink();
 })

你可以在action new中调用父类控制器中的构建方法。所以,当你运行parent/new时,你会有一个已经创建的子节点。就像这样:@parent.children.build