Когда я использую link_to: method = > : delete, то, что создал рельсы, является кликом javascript, что не очень приятно, если вы сталкиваетесь с ситуацией, когда ваш клиент просто отключил javascript. Мне это кажется плохой идеей. Есть ли шанс обойти это?
Ваш единственный вариант - сделать это вручную.
Предполагая, что объект, который вы хотите удалить, находится в @item, просто выполните следующее:
form_for @item, :method => :delete do |f|
f.submit "Delete this item"
end
Затем вы можете создать кнопку отправки, чтобы она выглядела как обычная ссылка, если вы хотите.
То, что он генерирует, является формой с методом = "удалить", лучше всего сделать форму самостоятельно, единственное, что кнопка отправки не будет ссылкой, а кнопкой.
Вы не должны, каким бы то ни было образом, пытаться сделать это с помощью базового <a href="">
, потому что подрывное действие (создание, обновление, удаление) не должно выполняться с помощью запроса GET
.
Если вам нужно работать без JavaScript, используйте button_to
:
<%= button_to 'Delete', @item, :method => :delete %>
Из документа:
Создает форму, содержащую одну кнопку, которая отправляет URL-адрес созданный набором + вариантов+. Это самый безопасный метод для убедитесь, что ссылки, которые вызывают изменения в ваших данных, не вызываются поиск ботов или ускорителей.