Укажите контроллер вне пространства имен в Rails 6 - PullRequest
1 голос
/ 30 октября 2019

У меня есть эта текущая настройка, которая работала:

concern :commentable do
  resources :comments, only: %i[create destroy], controller: '/comments'
end

, и она использовалась под маршрутами как

namespace :admin do
  resources :discussions, concerns: %i[commentable]
end

В рельсах 6, когда я делаю это, я получаю:

ArgumentError ('/ comments' не является поддерживаемым именем контроллера. Это может привести к потенциальным проблемам с маршрутизацией. См. https://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use):

Как указать контроллер, который находится за пределами текущегомодуль маршрута?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Ну, я не нашел исправления для этого, но я нашел обходной путь.

Замените namespace :admin на scope '/admin/', module: :admin, as: :admin, тогда вы можете использовать controller: '/comments' для ссылки на контроллеры вне текущего пространства имен.

concern :commentable do
  resources :comments, only: %i[create destroy], controller: '/comments'
end
0 голосов
/ 30 октября 2019

проблема здесь:

concern :commentable do
  resources :comments, only: %i[create destroy], controller: :comments # No '/comments'
end

Это автоматически подаст POST /comments и DELETE /comments/:id. Тогда, когда вы смонтируете эту проблему в вашем пространстве имен, все должно работать нормально

...