使用 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 的链接的最佳方式是什么,无论它是如何打开的?