Как скрыть ссылку удаления, когда в форме есть только одна строка / элемент, используя link_to_remove_association в рельсах

Я использую кокон для добавления / удаления записи "на лету" из формы в рельсах. Есть ли способ скрыть ссылку удаления, которая добавляется на страницу, используя link_to_remove_association, если есть только одна строка / элемент?

2 ответа

Решение

Я починил это. Поскольку строки добавлялись из JS, управление скрытием / показом ссылки удаления должно было выполняться из самого JS, а не из рельсов.

$(document).ready(function() {
    $('#container')
      .on('cocoon:after-insert', function() {
        if($(".fields-row").length > 1){
          $(".remove_fields")[0].style.display="block";
        }else{
          $(".remove_fields")[0].style.display="none";
        }
      })
      .on("cocoon:after-remove", function() {
        if($(".fields-row").length == 1){
          $(".remove_fields")[0].style.display="none";
        }else{
          $(".remove_fields")[0].style.display="block";
        }
      });
});

Класс.remove_fields добавляется в <a> помечать автоматически при использовании link_to_remove_association

По некоторым причинам.show()/. Hide() методы JQuery не работали, поэтому я использовал.style.display

Я бы просто завернул его в блок if, например

<% if foos.size > 0 %>
  <% link_to "Remove", remove_foo_path(foo) %>
<% end %>

Может использовать индекс FormBuilder.

HAML:

.nested_fields
  %h3 Nested object
  - unless f.index == 0
    = link_to_remove_association "remove", f
Другие вопросы по тегам