使用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中获取(看起来像)链接的最佳方式是什么?
右键单击并'在新选项卡中打开链接'就像复制链接并粘贴到新选项卡中一样。因此,它充当一种获取方法。由于您仅接受后方法,因此会发生RoutingError。
btw,如果您想在新标签页中打开后链接,则可以使用target ='_ blank'。