带有`method`参数的`link_to`在新选项卡中打开时给出404

问题描述 投票:0回答: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中获取(看起来像)链接的最佳方式是什么?

ruby-on-rails ruby ruby-on-rails-5 rails-ujs jquery-rails
1个回答
0
投票

右键单击并'在新选项卡中打开链接'就像复制链接并粘贴到新选项卡中一样。因此,它充当一种获取方法。由于您仅接受后方法,因此会发生RoutingError。

btw,如果您想在新标签页中打开后链接,则可以使用target ='_ blank'。

© www.soinside.com 2019 - 2024. All rights reserved.