Управление маршрутами с рельсами
-
11-10-2019 - |
Вопрос
Я хочу лучше понять файл маршрутов Rails, но я не могу понять его сам, так как он слишком сложный.
В основном у меня есть 3 контроллера. Это: администратор, управление продуктом и управление ProductCategory (у меня есть 2 модели: продукт, продукт, продукт и модели продукта.
Действия контроллера администратора:
- Индекс (перенаправление в вход)
- авторизоваться
- выйти
- пытаться
Действия управления контроллером управления:
- индекс
- Crud (Delete, Edit, Show, List) для модельного продукта
ManageProductCategory
- индекс
- Crud (Delete, Edit, Show, List) для модели Product_category
Я хочу иметь возможность управлять своими прикладными маршрутами, чтобы, если я ввожу в браузер:
mywebsite/admin
mywebsite/admin/login
mywebsite/admin/logout
mywebsite/admin/manage_product
mywebsite/admin/manage_product_category/1
mywebsite/admin/manage_product/delete
mywebsite/admin/manage_product/10
И так далее...
Проблема в том, что я не могу понять, как настроить файлы маршрута, чтобы Rails понял, что Admin/Manage_product не является действием контроллера администратора ...
Примечание: все уже работает (Crud для 2 моделей и ссылки на действие через стандартный не рекомендуемый маршрут
match ':controller(/:action(/:id(.:format)))'
Действительно ценю вашу помощь и внимание
С Уважением
Решение
Вам нужно пространство имен
# Rails 2.3.x
map.namespace :admin do |admin|
map.resources :products
end
# Rails 3
namespace "admin" do
resources :products
end
Это даст вам следующие методы помощника URL:
admin_products_path GET { :controller => "admin/products", :action => "index" }
new_admin_product_path GET { :controller => "admin/products", :action => "new" }
admin_products_path POST { :controller => "admin/products", :action => "create" }
Чтобы сгенерировать контроллер в пространстве имен администраторов, вам нужно сделать следующее под вашей консоли:
$ rails generate controller admin/products
Это генерирует для вас admin
каталог под app/controllers
и тогда products.rb
файл:
class Admin::ProductsController < ApplicationController
end
Теперь о входе в систему в пространстве имен администраторов вы можете настроить его с разработкой, что является жемчужиной для аутентификации. Вы можете пойти дальше здесь: https://github.com/plataformatec/devise/wiki/_pages