gpt4 book ai didi

ruby-on-rails - Rails.application.routes.recognize_path 无法识别 POST 路由

转载 作者:行者123 更新时间:2023-12-02 11:25:49 25 4
gpt4 key购买 nike

我正在使用 Rails.application.routes.recognize_path将路径分解为它的组件 - :controller, :action, :id 等。它似乎对 GET 路由工作正常,但对于 POST 路由,它是空的。这是我的路由文件的相关部分:

resources :units do
member do
get :test_get
post :test_post
end
end

这是 GET 识别路径的输出:
Rails.application.routes.recognize_path '/units/1/test_get'
=> {:controller=>"units", :action=>"test_get", :id=>"1"}

这是 POST 的输出:
Rails.application.routes.recognize_path '/units/1/test_post'
ActionController::RoutingError: No route matches "/units/1/test_post"

路由已定义 - 这是 rake routes 的输出
test_get_unit GET     /units/:id/test_get(.:format)  units#test_get
test_post_unit POST /units/:id/test_post(.:format) units#test_post

我的道路上缺少什么?我应该使用另一种方法吗?

最佳答案

让我放大这个答案。

我遇到了完全相同的问题。我有

@controller_action_hash = Rails.application.routes.recognize_path(request.url)

在 application_controller.rb 中。这导致 Rails 4 做了一个
ActionController::RoutingError (No route matches "http://localhost:3000/internal_users/sign_out"):

(我正在使用设计)。

这让我陷入了检查routes.rb、运行rake路由并在Devise中跟踪代码的麻烦。

解决问题

在我的情况下,以下工作
@controller_action_hash = Rails.application.routes.recognize_path(request.url, method: request.env["REQUEST_METHOD"])

就我而言
request.env["REQUEST_METHOD"]   # => "DELETE"

关于ruby-on-rails - Rails.application.routes.recognize_path 无法识别 POST 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36852697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com