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



我有一个应用程序,我希望永远不能删除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" 

(这肯定有一个路由,如果我在routes.rb文件中留下resources :foos,它就会起作用。)

我已经读过几次外面的路由了,但我想我不明白。如果有任何帮助,我将不胜感激。

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

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

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

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

resources :foos, :except => :destroy

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

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

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

/bars/:bar_id/foos/:id

最新更新