为coccon宝石增加限制

时间:2018-09-04 21:29:40

标签: ruby-on-rails cocoon-gem

我有一个Secondaryparents表,我想将添加按钮限制为1个Secondaryparent。

<div id ='secondaryparents'>
  <%= f.fields_for :secondaryparents do |builder| %>
  <%= render 'secondaryparent_fields', :f => builder %>
  <% end %>
  <%= link_to_add_association 'Add Secondary Parent', f, :secondaryparents, limit: 1 %>
</div>

我尝试添加限制:1,但不起作用。有什么办法可以做到这一点?

3 个答案:

答案 0 :(得分:0)

您可以通过JS事件取消操作

https://github.com/nathanvda/cocoon#canceling-a-callback

类似的东西:

$('#secondaryparents').on('cocoon:before-insert', function(event, insertedItem) {
  if($('css seletor').length > 1){
    event.preventDefault();
  }
});

答案 1 :(得分:0)

我的首选方法是在达到要求的数量时隐藏链接以添加新项目。

一种简单的方法是使用cocoon:after-insertcocoon:after-remove回调,计算触发时插入的项数,并在需要时隐藏/显示link_to_add_association链接。

  

注意:由于这是UX选择,因此在cocoon中并未将其实现为功能。我认为,最好不要显示我们事先知道不会产生任何结果的可点击内容。但是意见和做法有所不同:)

示例实现:https://github.com/nathanvda/cocoon/wiki/How-to-limit-the-number-of-nested-fields

答案 2 :(得分:0)

<script type="text/javascript">
  $(function() {
    // console.log('dfdsfdsf')
  // limits the number of categories
  $('#secondaryparents').on('cocoon:after-insert', function() {
    $('#add-category a').hide();
  });

  $('#secondaryparents').on('cocoon:after-remove', function() {
    $('#add-category a').show();
  });

    if (<%= @parent.secondaryparents.length %>) {
    $('#add-category a').hide();
  }

})
</script>