Вопрос

Я хочу лучше понять файл маршрутов 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top