2013-08-19 4 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, с except и only варианты:

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. Очень полезно для меня в будущем. –