我是 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"):
我也尝试了一些其他的事情,但没有得到非常满意的结果。
有人可以帮我解决如何正确执行此操作吗?
使用-
使用约束:
# 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