Gestion d'itinéraires avec des rails
-
11-10-2019 - |
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
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