Как создать умные, вложенные ссылки? - PullRequest
0 голосов
/ 25 января 2011

в маршрутизации

     resources :departments do
       resources :buildings do
         resources :halls do
       end
       resources :chairs do
         resources :buildings do
           resources :halls do
         end
       end
     end

Я хочу поделиться одинаковыми представлениями buildings и halls между chairs и departments. И я подумываю создать URL во взглядах следующим образом:

link_to "Show", [@department, @chair, @building, @hall].compact

Если @chair не существует, это будет nil, поэтому верхняя ссылка сгенерирует:

link_to "Show", [@department, @building, @hall]

Если существует @chair:

link_to "Show", [@department, @chair, @building, @hall]

Мой вопрос: как создать URL-адрес для действия edit или new? Или, может быть, существует лучшее решение для этой проблемы с такими вложенными ресурсами?

Ответы [ 2 ]

0 голосов
/ 25 января 2011

Вы также можете вставить символ в массив. Так что-то вроде этого:

link_to "Edit", [:edit, @department, @chair, @building, @hall]
0 голосов
/ 25 января 2011

У меня есть приложение, в которое мы вкладываем от трех до четырех ресурсов. Одним из примеров является управление контактами. У нас есть компании, расположение и контактные модели.

Обычно вы можете получить доступ к новым и редактировать пути с помощью new_department_chair_building_path(@department,@chair).

Не забудьте указать скрытые идентификаторы ваших предшественников (департамент, кресло) в форме для нового здания.

В вашем контроллере здания вам придется отфильтровывать, какие объекты загружать в зависимости от контекста. Мы делаем это примерно так

# Company controller
def index
  if params[:project]
    @project = ....
  end
end

Возможно, есть лучшие способы сделать это, но мы не нашли ни одного.

В представлениях мы проверяем @project, а затем выводим частичные значения.

Надеюсь, это может вам чем-то помочь.

Приветствия

Dan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...