Rails - 执行 POST 方法时不允许使用该方法(错误 405)

问题描述 投票:0回答:1

我来自这篇文章: Rails 使用 puma,将 localhost:3000 更改为 localhost:3000/example

我已经解决了这个问题,但现在当我发出发布请求时,我收到“方法不允许”。我一直在阅读并尝试这个解决方案: Post 返回 405 方法不允许

我知道问题出在哪里:如果我放入 application.rb 第 1 行和第 2 行,所有资产都会正确显示,并且 post 方法不会执行此操作。如果我评论这些行,方法会起作用,但资产不会。

应用程序.rb:

class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.1

    config.exceptions_app = ->(env) { ExceptionController.action(:show).call(env) }
    config.action_dispatch.rescue_responses["BadTaste"] = :bad_request

    1- config.action_controller.asset_host = "https://www.sevilla.org"
    2- config.assets.prefix = '/autorizaciones-movilidad'
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.
  end

路线:

Rails.application.routes.draw do
    #resources :assets, path: '/autorizaciones-movilidad'
    scope "/autorizaciones-movilidad" do
      get 'vehicles/new'
      get 'vehicles/create'
      ...
      get 'vehicles/update'
    end
end

控制器结构:

不知道如何解决。

它是使用代理服务器部署的(在本地主机中它工作正常)

ruby-on-rails-5 puma http-status-code-405
1个回答
0
投票

您可能早已解决了这个问题或继续前进,但我们开始了。

需要考虑的一件事是,使用 Rails,当您应该得到 404 错误时,您可能会得到 405 错误。

我试图对 http://localhost:3000/get_estimate 进行 POST 调用,但在端点文件中,路由是“/estimate”而不是“/get_estimate”,后者不存在。

查看上面的代码,您可能对

进行了 POST 调用
localhost:3000/autorizaciones-movilidadvehicles/new

而不是

localhost:3000/autorizaciones-movilidad/vehicles/new

注意第二个 URL 中“vehicles”之前的“/”,第一个 URL 中缺少该“/”。这可能会给您带来 405,而不是更准确的 404。

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