Поддерживает ли Rails link_to с помощью метода post? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть рельсы link_to, которые я хочу запустить с помощью ...

<%= link_to 'Unfollow', follows_path(user_id: u.id), method: :delete, class: 'text-right btn btn-primary' %>

Маршрут для него:

  resource :follows, only: %i[create destroy]

Однако, когда я нажимаю на него работает как get:

Started GET "/follows?user_id=1" for ::1 at 2020-05-27 00:51:00 +0100

ActionController::RoutingError (No route matches [GET] "/follows"):

Я проверил несколько вопросов по SO об использовании link_to в качестве метода публикации, но безрезультатно. Я считаю, что стоит упомянуть, что HTML отображается как:

<a class="text-right btn btn-primary" rel="nofollow" data-method="delete" href="/follows?user_id=8">Unfollow</a>

Однако в конце концов я смирился с использованием такой небольшой формы:

<% if !(current_user.is_following?(@user)) %>
  <% @follow = Follow.new %>
  <%= form_for (@follow) do |f| %>
    <%= hidden_field_tag :user_id, @user.id %>
    <%= f.submit "Follow", class: "btn btn-primary" %>
  <% end %>
<% else %>
  <% @follow = Follow.new %>
  <%= form_for (@follow), method: :delete do |f| %>
    <%= hidden_field_tag :user_id, @user.id %>
    <%= f.submit "Unfollow", class: "btn btn-primary" %>
  <% end %>
<% end %>

Это больше невозможно использовать методы публикации с link_to или изменился синтаксис?

1 Ответ

1 голос
/ 27 мая 2020

введите follow_path с единственным числом, которое не следует

<%= link_to 'Unfollow', follow_path(user_id: u.id), method: :delete, class: 'text-right btn btn-primary' %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...