Я пытаюсь понять, как вкладывать маршруты в Rails 5 (чтобы связанные контроллеры хранились вместе.
У меня есть файловое дерево контроллеров, настроенное как:
app/controllers/users
В этой папке у меня есть контроллеры для:
identities_controller.rb
app_roles_controller.rb
Каждый из этих контроллеров сохраняется как:
class Users::IdentitiesController < ApplicationController
class Users::AppRolesController < ApplicationController
В моем файле маршрутов есть:
resources :app_roles,
:controllers => {
:app_roles => 'users/app_roles'
}
devise_for :users,
:controllers => {
:sessions => 'users/sessions',
:registrations => "users/registrations",
:omniauth_callbacks => 'users/omniauth_callbacks'
}
resources :identities,
:controllers => {
:identities => 'users/identities'
}
resources :users
В моей папке представлений все файлы находятся на верхнем уровне. Мне неясно, нужно ли мне группировать их так же, как я делаю свои контроллеры.
Когда я сохраняю все это и пытаюсь перейти к http://localhost:3000/app_roles#index, Я ожидаю перейти к моему приложению/views/app_roles/index.
Вместо этого я получаю сообщение об ошибке:
app_roles
uninitialized constant AppRolesController
Когда я разгребаю маршруты, я получаю:
rake routes | grep app_roles
app_roles GET /app_roles(.:format) app_roles#index {:controllers=>{:app_roles=>"users/app_roles"}}
POST /app_roles(.:format) app_roles#create {:controllers=>{:app_roles=>"users/app_roles"}}
new_app_role GET /app_roles/new(.:format) app_roles#new {:controllers=>{:app_roles=>"users/app_roles"}}
edit_app_role GET /app_roles/:id/edit(.:format) app_roles#edit {:controllers=>{:app_roles=>"users/app_roles"}}
app_role GET /app_roles/:id(.:format) app_roles#show {:controllers=>{:app_roles=>"users/app_roles"}}
PATCH /app_roles/:id(.:format) app_roles#update {:controllers=>{:app_roles=>"users/app_roles"}}
PUT /app_roles/:id(.:format) app_roles#update {:controllers=>{:app_roles=>"users/app_roles"}}
DELETE /app_roles/:id(.:format) app_roles#destroy {:controllers=>{:app_roles=>"users/app_roles"}}
Мне кажется, эти маршруты показывают, что app_roles#index должен идти в app/views/app_roles/index.html.erb через контроллер в app/controllers/users/app_roles_controller.rb
У меня такая же проблема с ресурсом удостоверений.
ДОГАДАНИЯ Я попытался переместить папку app/views/app_roles в папку пользователей (т. е. app/views/users), но получаю ту же ошибку, когда затем пытаюсь перейти к папке http://localhost:3000/app_roles#index, чтобы проверить, работает ли он.
Я также попытался изменить файл маршрутов на:
resources :app_roles,
:resources => {
:app_roles => 'users/app_roles'
}
Под этим я подразумеваю, что я изменил ссылку на :controllers на :resources. Не помогло - та же ошибка.
Может ли кто-нибудь увидеть, что я делаю неправильно?
app/controllers/users/<my_controller>.rb
. - person max pleaner   schedule 08.10.2016app/controllers/user_controller
? Он может содержать толькоclass UsersController < ApplicationController; end
- person max pleaner   schedule 08.10.2016