2010-07-16 4 views
0

Je suis Amit. Je suis nouveau à Rails. S'il vous plaît pardonnez-moi si vous posez des questions stupides .Réécriture d'URL dans ROR

J'ai parcouru cet article. Je souffre également du même problème .

mon URL de site comme celui-ci: locahost: 3000/utilisateurs/modifier/30

Je ne veux pas montrer le contrôleur: les utilisateurs et l'action: modifier.

Je veux récrire (réécriture) l'URL ou je veux maintenir l'URL comme http://127.0.0.0:3000/30/ seulement. (30 est un identifiant utilisateur)

Je ne suis pas intéressé à montrer le contrôleur (utilisateur) et l'action (modifier) ​​

I total intention est de cacher (cACHE) et la réécriture (REWRING) l'URL et surtout je veux cacher les extensions d'URL avec le contrôleur et les actions principalement ..

Répondre

0

Pour la plupart des applications que j'utilise la norme:

/script.cgi?arg1=foo&arg2=bar 

Maintenant, évidemment/user/modifier/eric semble beaucoup mieux pour une URL qui implique éditant l'utilisateur "Eric". Mais comment cela fonctionne quand vous avez éléments multiples. Par exemple si je veux supprimer un groupe d'utilisateurs. Je pourrais avoir quelque chose comme ça à l'ancienne:

/user/delete.cgi?id=3&id=5&id=7 

ou pour un format plus lisible que nous aurions pu:

/user/delete.cgi?username=eric&username=john&username=paul 

Ceci suppose bien entendu que les noms d'utilisateur sont uniques. :) Il semble donc que je voudrais quelque chose comme:

/user/delete/eric/john/paul 

Cela rend évident ce qui se passe de l'URL. Mais comment puis-je générer cela? Et si une action reçoit cette demande comment cela se parsé donc j'ai quelque chose comme:

@delete_usernames ===>>> [ 'eric', 'john', 'paul' ] 

De cette façon, je peux alors charger les utilisateurs et les supprimer. Je sais que ActionController fournit quelques méthodes pour traiter la réécriture d'URL mais je ne sais pas comment les utiliser au mieux. Toute aide ou pointeurs sont grandement appréciés.

2

C'est une exigence étrange de vouloir utiliser une route de cette façon car il vous sera difficile d'étendre ce système pour prendre en charge d'autres actions dans votre application. L'un des avantages des conventions Rails telles qu'elles sont est que vous n'avez généralement pas à vous soucier des détails de l'application (souvent insignifiants) ou à avoir des opinions très arrêtées à leur sujet.

Mais ce que vous avez vraiment, vraiment envie, vous pouvez ajouter à votre config/routes.rb

ActionController::Routing::Routes.draw do |map| 
    map.connect "/:id", :controller => "users", :action => "edit" 
end 

Rappelez-vous que ce système limité signifie que vous pouvez seule voie à l'action d'édition. Pas très utile, je dirais.

+1

Je suis d'accord avec @bjg. Je pense que si vous essayez de visiter http://127.0.0.0:3000/logout, il redirigera vers user/edit/logout en supposant que la déconnexion en tant qu'id – Addy