Question

Je veux être en mesure de mieux comprendre le fichier des routes rails, mais je ne peux pas le comprendre par moi-même, car il est trop complexe.

Fondamentalement, j'ai 3 contrôleurs. Ils sont: Admin, ManageProduct et ManageProductCategory (j'ai 2 modèles: produit, ProductCategory et modèle ProductCategory has_many / belongs_to relation produits)

Actions de contrôleur Admin:

    index
  • (redirige vers login)
  • Connexion
  • logout
  • tentative

Actions de contrôleur ManageProduct:

    index
  • CRUD (supprimer, modifier, afficher, liste) pour les produits de modèle

ManageProductCategory

    index
  • CRUD (supprimer, modifier, afficher, liste) pour le modèle PRODUCT_CATEGORY

Je veux être en mesure de gérer mes voies d'application de sorte que si je tape dans le navigateur:

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

Et ainsi de suite ...

Le problème est que je ne peux pas comprendre comment configurer mes fichiers afin que les rails itinéraire comprennent que admin / manage_product est pas une action du contrôleur d'administration ...

AVIS: Tout fonctionne déjà (CRUD pour 2 modèles et des liens vers l'action par route standard non recommandée

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

apprécient vraiment votre aide et attention

Cordialement

Était-ce utile?

La solution

Qu'est-ce que vous avez besoin est un espace de noms

# Rails 2.3.x
map.namespace :admin do |admin|
  map.resources :products
end

# Rails 3
namespace "admin" do
  resources :products
end

Cela vous donnera les méthodes d'aide d'URL suivante:

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" }

Pour générer un contrôleur dans l'espace de noms d'administration que vous devez faire ce qui suit dans votre console:

$ rails generate controller admin/products

pour vous génèrera le répertoire admin sous app/controllers puis le fichier products.rb:

class Admin::ProductsController < ApplicationController
end

A propos, la connexion sous l'espace de noms admin vous pouvez le configurer avec génie, qui est une pierre précieuse pour l'authentification. Vous pouvez aller plus loin ici: https://github.com/plataformatec/devise/wiki/_pages

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top