1

使用 Ruby 2.5.1/Rails 5.2.4.1 我生成了一个新的 Rails 应用程序,并编辑/创建了以下文件:

# config/routes.rb
Rails.application.routes.draw do
  root 'some#home'
  post 'foo' => 'some#foo'
end
# app/controllers/some_controller.rb
class SomeController < ApplicationController
  def foo; end
end
# app/views/some/home.html.erb
<%= link_to 'Do stuff', foo_path, method: :post %>

如果我正常单击此链接,它会发出 POST 请求并按预期给出成功响应(204)。

如果我单击以在新选项卡中打开它(中间单击/右键单击和“在新选项卡中打开链接”),它会发出 GET 请求并给出 404/RoutingError。

这种不同的行为取决于我如何打开(默认情况下对用户显示的内容)一个正常链接似乎令人惊讶 - 这是预期的行为吗?我猜这与使用 Rails UJS 的链接有关,并且在打开新选项卡时表现不同?在 Rails 中获取(看起来像)一个生成 POST 的链接的最佳方式是什么,无论它是如何打开的?

4

1 回答 1

1

右键单击并“在新选项卡中打开链接”就像复制链接并粘贴到新选项卡中一样。因此,它充当 get 方法。

由于您只接受 post-method,因此会发生 RoutingError。

顺便说一句,如果您想在新选项卡中打开后链接,可以使用 target='_blank' 。

于 2020-01-14T02:16:40.950 回答