无法将自定义方法 REST 路由与 ruby on Rails 匹配

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

我是 ruby-on-rails 的新手,很难尝试获取与我的 API 服务相匹配的路线。

我按照 Google AIP-136 为资源设计了自定义路由。

例如以下路线

  • /books/{book_id}:doSomething
  • /books/{book_id}:doSomeOtherThing

在 config/routes.rb 中,我期望以下内容能够工作 -

post '/books/:id/\:doSomething', to: 'books#do_something_handler'
post '/books/:id/\:doSomeOtherThing', to: 'books#do_some_other_thing_handler'

但这不起作用。 我得到一个

ActionController::RoutingError (No route matches [POST] "/books/1234:doSomething"):

我也尝试了一些其他的事情,但没有得到非常满意的结果。

有人可以帮我解决如何正确执行此操作吗?

使用-

  • 导轨7.1.3.4
  • 红宝石3.3.4
ruby-on-rails rails-routing
1个回答
0
投票

使用约束:

# POST /books/1:doSomething
post "/books/:id\::custom_method", 
  to: "books#do_something_handler",
  constraint: {custom_method: "doSomething"}

使用rails'

action
参数,在这种情况下自定义方法需要匹配操作名称:

# POST /books/1:doSomething
# routes to `doSomething` controller action
post "/books/:id\::action", controller: :books
© www.soinside.com 2019 - 2024. All rights reserved.