我有一个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,但不起作用。有什么办法可以做到这一点?
答案 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-insert
和cocoon: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>