如何在routes.rb中构建特定的资源路由

时间:2013-08-19 17:27:00

标签: ruby-on-rails

我有一个应用,我希望永远无法删除Foo。如何配置resources :foos不创建删除路由?

此外,foos属于bars,只能在bars展示页面上展示。我尝试了以下get路由,但我收到了相关的错误:

get "/foos/:id"

ArgumentError at /bars/1220
missing :controller

-

get "/foos"

ArgumentError at /bars/1220
missing :action

-

get "foos/show"

No route matches [GET] "/bars/1220" 

(这绝对是一条路线,如果我将resources :foos留在routes.rb文件中,它就有效。)

我已经读了几次来自外面的路由,但我想我没有得到它。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

使用resources命令时,您可以使用exceptonly选项指定要包含的标准路由:

resources :foo, :except => [:destroy] do
end

resources :foo, :only => [:index, :create, :show] do
end

答案 1 :(得分:1)

要防止创建删除路由,请执行以下操作:

resources :foos, :except => :destroy

关于你的第二个问题(如果我理解正确的话),你必须使用嵌套资源:

resources :bars do
  resources :foos, :except => :destroy
end

这将创建许多路线,包括:

/bars/:bar_id/foos/:id