Я предвосхищу это тем, что я новичок в RoR. У меня есть класс, который находится во вложенном модуле, ::Physical::Users::User
. Код организован в пути, такие как приложение \ контроллеры \ физические \ пользователи.
Моя проблема возникает, когда я пытаюсь использовать form_for
так:
<% form_for @user do |f| %>
...
<% end %>
Я получаю ошибку ActionView::TemplateError undefined method 'physical_users_users_path'
Я понимаю, что это связано с рельсами, ожидающими маршруты, которые не соответствуют моим. Чтобы заставить мое приложение работать так, чтобы ресурс: users шел прямо в правильный каталог (чтобы мне не приходилось использовать http: \ myurl.com \ физического \ пользователи \ пользователи \ 1 ', я добавил мой файл route.rb:
map.resources :users, :controller => 'physical/users/users'
Когда я запускаю "> Рейк-маршруты", я получаю следующее:
users GET /users(.:format) {:controller=>"physical/users/users", :action=>"index"}
POST /users(.:format) {:controller=>"physical/users/users", :action=>"create"}
new_user GET /users/new(.:format) {:controller=>"physical/users/users", :action=>"new"}
edit_user GET /users/:id/edit(.:format) {:controller=>"physical/users/users", :action=>"edit"}
user GET /users/:id(.:format) {:controller=>"physical/users/users", :action=>"show"}
PUT /users/:id(.:format) {:controller=>"physical/users/users", :action=>"update"}
DELETE /users/:id(.:format) {:controller=>"physical/users/users", :action=>"destroy"}
/:controller/:action/:id
/:controller/:action/:id(.:format)
Есть ли способ сохранить более короткий URL моего пользовательского ресурса и заставить form_for
искать правильный маршрут?
Опять же, я новичок, поэтому, если я что-то упустил в этом объяснении, дайте мне знать!
-
В ответ на приведенные ниже ответы контроллер находится по адресу app / controllers / Physical / Users / Users_controller.rb.
Изменение маршрутизации для использования пространств имен, таких как:
map.namespace :physical do |physical|
physical.namespace :users do |users|
users.resources :users
end
end
генерирует маршруты, которые соответствуют тому, что ищет form_for
, но тогда я теряю возможность использовать URL http: \ mysite.com \ users \ 1.
Спасибо за помощь!