метод ссылки : : удалить HTML

#html #ruby-on-rails #ruby #erb

#HTML #ruby-on-rails #ruby #ошибка

Вопрос:

Я относительно новичок в программировании и просто задаюсь вопросом, есть ли способ создать что-то подобное = link_to "sign out", destroy_user_session_path, method: :delete , но с использованием <a> ссылки.

Редактировать

Позвольте мне уточнить, я использовал = link_to "sign out", destroy_user_session_path, method: :delete в своем коде (я использую haml), но он все еще выполняет запрос get. Это в выпадающем меню, и оно работает нормально, если размещено на реальной странице. Есть ли какая-либо причина для этого, или rails просто глупый?

Ответ №1:

link_to создаст <a> элемент. Это всего лишь вспомогательный метод Rails, который создает <a> элементы, но с дополнительными преимуществами, заключающимися в возможности легко использовать такие вещи, как помощники Rails route, и добавлять дополнительные параметры поведения (например, глаголы, не являющиеся GET). Обычно нажатие на <a> элемент приводит к тому, что браузер выполняет GET-запрос, но удаление не является идемпотентным, поэтому его никогда не следует выполнять с помощью GET-запроса.

link_to Помощник Rails помогает вам обойти это, позволяя вам указать method: :delete , который подключает дополнительные обработчики щелчков Javascript для элемента, что заставит его выполнять POST через Javascript, а не просто позволяет браузеру отправлять запрос GET при нажатии на ссылку. Он по-прежнему является <a> элементом и может быть оформлен и представлен как таковой, но при нажатии на него выполняется запись формы с использованием глагола DELETE, а не выполнение простого запроса GET.

Комментарии:

1. Недавно я попытался использовать link_to и почему-то у меня это не сработало, поэтому я использовал button_to

Ответ №2:

<%= link_to(‘sign out’, destroy_user_session_path, метод: :delete) %>

если вы сгенерировали devise controller, пожалуйста, сделайте это следующим образом :

 rails d devise:controllers users
  

вместо:

 rails d devise:controllers user
  

Ответ №3:

Вот вспомогательные методы rails по умолчанию для создания ссылок, пожалуйста, обратитесь к ссылке ниже. вы получите хорошее представление о link_to

https://api.rubyonrails.org/v5.2.3/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to