2013-08-19 24 views
0

我有一個應用程序,我希望永遠不能刪除Foo。我怎樣才能配置resources :foos不創建刪除路由?如何在routes.rb中構建特定的資源路由

另外,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

可以指定標準路線,包括當您使用resources命令,與exceptonly選項:

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

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

以防止刪除路線創建操作:

resources :foos, :except => :destroy 

關於你的第二個問題(如果我理解正確的話),你必須使用嵌套的資源:

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

這會創造出很多途徑,包括:

/bars/:bar_id/foos/:id 
+0

感謝@ amb110395。對我前進很有幫助。 –