Псевдоним для маршрутов рельсов вложенных ресурсов

У меня есть модель batch_class, и под этими статьями есть ресурсы заданий. Маршруты.rb выглядят следующим образом.

resources :batch_classes do
  member do 
    resources :articles, except: [:index] 
    resources :assignments
 end

конец

Проблема в том, что я не получаю желаемый маршрут URL. Мой rake routes для редактирования assignments показывает это.

/batch_classes/:id/assignments/:id/edit(.:format)

с псевдонимом edit_assignment_path. Однако мой ожидаемый маршрут

/batch_classes/:batch_class_id/assignments/:id/edit(.:format).

Пожалуйста помоги.


person Rajan Verma - Aarvy    schedule 03.06.2019    source источник
comment
Уберите resources :assignments из членского блока и проверьте еще раз   -  person Imran Ahmad    schedule 03.06.2019


Ответы (2)


Желаемый маршрут пути может быть достигнут путем удаления resources :assignments из блока-члена.

resources :batch_classes do
  resources :assignments
  member do 
    #...
  end
end

Для правильной реализации настоятельно рекомендуется просмотреть этот документ.

person Imran Ahmad    schedule 03.06.2019
comment
Я следил за этой документацией, я боюсь, что они разместили здесь неверную информацию. guides.rubyonrails.org/v3.2.2/routing.html#nested- ресурсы проверьте таблицы в разделе вложенных ресурсов. они дважды использовали один и тот же :id в маршруте редактирования. - person Rajan Verma - Aarvy; 03.06.2019
comment
Теперь это исправлено. - person Imran Ahmad; 04.06.2019
comment
Проблема не в текущей версии документа, а в 3.2.2. - person Imran Ahmad; 04.06.2019

Вы можете иметь вложенные маршруты, просто поместив вложенный ресурс в родительские ресурсы.

resources :batch_classes do
  resources :assignments
end

Тогда у вас обязательно будет маршрут под названием edit_batch_class_assignment_path и вы сможете передавать экземпляры как edit_batch_class_assignment_path(@batch_class, @assignment)

person quyetdc    schedule 03.06.2019