2015-01-11 4 views
0

Мне интересно, что лучше всего традиционно с вложенными ресурсами. В руководстве не должно быть более одного вложенного ресурса, и они советуют использовать shallow: true, если это так.Rails 4 и вложенные ресурсы с параметрами

Однако, в этом случае, у меня есть:

  • Исследование
    • Госпиталь
      • Событие

В моей routes.rb я К.Н. вл это не рекомендуется:

resources :studies do 
    resources :hospitals, shallow: true do 
    resources :events 
    end 
end 

Но это по существу то, что я хочу:

/studies/1/hospitals/3/events/new

И это должно занять :patient_id (ресурс событий нуждается в нем, как поле, и я не хорошо сделав ?patient_id=45 как параметры).

Я создал ручной ресурс следующим образом:

get '/events/new/:study_id/:hospital_id/:patient_id' => 'events#new', as: 'new_event' 

Это делает это хорошо, и я получаю мои параметры просто отлично - это предлагаемый способ избежать глубоко вложенных ресурсов?

Благодарим за помощь.

ответ

0

Я бы разломил их, поэтому у вас не так много гнездящихся. Примерно так:

resources :studies do 
    resources :hospitals, shallow: true 
end 

resources :hospitals, only: [] do 
    resources :events, shallow: true 
end 

Что касается отправки patient_id, я отправил бы это в тело сообщения как часть формы. Надеюсь это поможет.