Rails вложенные ресурсы - PullRequest
       21

Rails вложенные ресурсы

1 голос
/ 14 февраля 2009

Вот маршруты.rb:

map.resources :assignments, :shallow => true  do |assignment|  
    assignment.resources :problems  
end  

Как мне получить URL для редактирования проблемы (/ assignments / xyz / problem / abc / edit) в коде? Я пробовал оба
edit_assignment_problem_path (назначение, задачи)
и edit_problem_path (проблема).
В то время как первый работает на моей локальной установке, на сервере говорится, что метод edit_assignment_problem_path не определен. Есть идеи?

Ответы [ 3 ]

11 голосов
/ 14 февраля 2009

Запустите это в командной строке:

rake routes

Он расскажет вам все маршруты, которые вы определили, и как они отображаются. Очень удобно.

2 голосов
/ 09 декабря 2009

: shallow => true был представлен в Rails 2.2. Возможно, на вашем локальном компьютере установлена ​​более ранняя версия, а на сервере - 2.2 или более ранняя версия.

При небольших маршрутах вы ДОЛЖНЫ указать полный маршрут (например, / assignments / a / problem / ..) для: index,: create и: новые действия (потому что эти действия требуют полного пути) и ДОЛЖНЫ использовать короткий маршрут (например, / problem / ..) для действий: edit,: show,: update и: destroy.

Если вам нужны как полные, так и короткие версии всех маршрутов, единственная возможность - использовать маршрут с вложенными ресурсами без мелких и короткий маршрут, например ::10000

map.resources :assignments, has_many => :problems
map.resources :problems

Обратите внимание, что в вашем примере вам не нужно было использовать блочную форму для map.resources.

1 голос
/ 14 февраля 2009

Также ознакомьтесь с руководством по маршрутизации , которое может научить вас многому новому.

...