Как скрыть ссылку удаления, когда в форме есть только одна строка / элемент, используя 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