Rails 是不是支持带有方法 post 的 link_to?

Posted

技术标签:

【中文标题】Rails 是不是支持带有方法 post 的 link_to?【英文标题】:Does Rails support link_to with method post?Rails 是否支持带有方法 post 的 link_to? 【发布时间】:2020-09-14 08:05:08 【问题描述】:

我有一个 Rails 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"):

我已经检查了多个关于使用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 是否不再可以使用 post 方法或语法已更改?

【问题讨论】:

【参考方案1】:

将follow_path与单数不跟随

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

【讨论】:

抱歉,这不起作用,我仍在从另一个页面运行我的表单。您的建议返回 undefined_method 错误。

以上是关于Rails 是不是支持带有方法 post 的 link_to?的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS - 带有 Rails 3.2.3 的 $http POST

在 Rails 中包含带有帖子的评论

使用带有 Rails 引擎的 webpacker

带有载波的 Rails 3 测试夹具?

Ruby on Rails - 如何在 Rails 方法中使用 HTML 坐标?

Rails 4,Carrierwave,jcrop,移动到 POST,而不是 UPDATE