我可以通过资源方法在 Ruby on Rails 应用程序中使用排除项设置路由吗?

Posted

技术标签:

【中文标题】我可以通过资源方法在 Ruby on Rails 应用程序中使用排除项设置路由吗?【英文标题】:Can I set routes by resource method with exclusions in Ruby on Rails application? 【发布时间】:2016-07-09 06:51:14 【问题描述】:

Rails guides说我会写

resources :photos

routes.rb. 这将创建路线:

HTTP 动词路径控制器#Action 用于 GET /photos photos#index 显示所有照片的列表 GET /photos/new photos#new 返回用于创建新照片的 html 表单 POST /photos 照片#create 创建一张新照片 GET /photos/:id photos#show 显示特定照片 GET /photos/:id/edit photos#edit 返回一个用于编辑照片的 HTML 表单 PATCH/PUT /photos/:id photos#update 更新特定照片 DELETE /photos/:id photos#destroy 删除特定照片

我可以写一些类似的东西

resources :photos, :exclude => [:edit, :update]

获取除editupdate 之外的所有路由:

GET /photos photos#index 显示所有照片的列表 GET /photos/new photos#new 返回用于创建新照片的 HTML 表单 POST /photos 照片#create 创建一张新照片 GET /photos/:id photos#show 显示特定照片 DELETE /photos/:id photos#destroy 删除特定照片

或者我只能手动编写每条路线以获得预期的结果?

【问题讨论】:

除了我写完这篇文章后无疑会出现的三个答案之外,我建议您通读Rails Routing guide,这是对该主题的一个很好的介绍(与其他指南一样,顺便说一句)。 【参考方案1】:

是的,你可以。

你可以这样做:

resources :photos, only: [:index, :new, :create, :show, :destroy]

或者,如果您愿意:

resources :photos, except: [:edit, :update]

在此处阅读更多信息:http://guides.rubyonrails.org/routing.html#restricting-the-routes-created

【讨论】:

【参考方案2】:

你可以试试这个

:except 选项指定 Rails 不应创建的路由或路由列表:

resources :photos, except: [:edit, :update]

更多信息请点击这里 http://guides.rubyonrails.org/routing.html

【讨论】:

以上是关于我可以通过资源方法在 Ruby on Rails 应用程序中使用排除项设置路由吗?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails SOA 设计资源和示例

ruby-on-rails - 嵌套资源问题

Ruby on rails 中的资源未找到错误

何时在 Ruby on Rails 中使用 memoization

Ruby on Rails 4 中没有摘要的字体资源

Ruby on Rails 路由解析