Управление маршрутами с рельсами - PullRequest
1 голос
/ 19 декабря 2010

Я хочу быть в состоянии лучше понять файл маршрутов rails, но я не могу понять это сам, так как он слишком сложен.

В основном у меня есть 3 контроллера.К ним относятся: Admin, ManageProduct и ManageProductCategory (у меня есть 2 модели: Product, ProductCategory и модель ProductCategory has_many / own_to отношения продуктов)

Действия контроллера администратора:

  • index (перенаправляет для входа в систему)
  • вход
  • выход
  • попытка

Управление действиями контроллера продукта:

  • индекс
  • CRUD (удалить, редактировать, показать, список) для модельного продукта

ManageProductCategory

  • index
  • CRUD (удалить, редактировать, показать, список)для модели 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модели и ссылки на действия через стандарт не рекомендуетсяroute

match ':controller(/:action(/:id(.:format)))'

Очень ценю вашу помощь и внимание

С уважением

1 Ответ

2 голосов
/ 19 декабря 2010

Вам нужно пространство имен

# 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

Теперь о логинев пространстве имен администратора вы можете настроить его с помощью Devise, который является жемчужиной для аутентификации.Вы можете пойти дальше здесь: https://github.com/plataformatec/devise/wiki/_pages

...