ruby-on-rails - 在 Rails 中用 NIL 覆盖路由参数?
问题描述
如果我的默认期望参数的方法不使用参数,有没有办法使用资源路由而不是一个一个地编写路由?
例如,如果我有一个如下所示的路由文件,该update
方法的预期路径将是这样的/cats/:id
:( docs )
# routes.rb
Rails.application.routes.draw do
resources :cats, only: [:create, :update]
end
但是,我的方法不需要任何参数update
,这意味着路径应该是/cats
. 我知道有一种方法可以重命名参数而不是使用:id
,但我没有找到任何禁用它们的方法。我尝试添加param: nil
到行尾,但没有奏效。
正如我最初写的那样,我知道如果我像下面这样一一编写路线,就可以做到这一点。我的问题是我是否可以使用resources
它来做到这一点。谢谢!
# routes.rb
Rails.application.routes.draw do
post 'cats', to: 'cats#create'
put 'cats', to: 'cats#update'
end
解决方案
这正是单一资源的用例。引用Rails 指南:
有时,您有一个资源,客户端总是在不引用 ID 的情况下查找该资源。例如,您希望
/profile
始终显示当前登录用户的个人资料。
将我们的路由更改为
resource :cats, only: [:create, :update]
并且将创建以下路线:
cats PATCH /cats(.:format) cats#update
PUT /cats(.:format) cats#update
POST /cats(.:format) cats#create
推荐阅读
- javascript - 通过套接字(Socket.io)传输时数组数据被复制
- typescript - 如何从 SVGDocument 访问 rootElement?
- indexing - 在 Solr 中将一个字段转换为多个字段
- android - 如何在反应原生应用程序中升级 gradle
- c# - 是否可以在控件内显示所有可用的工具提示?
- javascript - 如何上传多个包含表单数据的文件?
- applescript - 使用 Applescript 控制 Quicktime
- javascript - 使用正则表达式查找与输入字符串中的一组单词/代码匹配的单词
- flutter - 找到一种方法将查询参数附加到颤振 InAppWebView 中的链接打开
- heroku - Heroku 数据库连接