2010-11-25 48 views
1

Si j'ai un contrôleur, comment y accéder via URL avec des méthodes nouvellement ajoutées?Ajout et accès aux contrôleurs dans ruby ​​on rails

Raison pour laquelle je suis confus parce que j'ai une route,

map.connect 'assignments/:external_id.:format', :controller => "assignments", :action => "show", :external_id => /\d{6}/ 

Il semble que je ne peux pas accéder à toute autre méthode dans le contrôleur assignments parce que si je fais

mysite.com/assignments/other_method 

Il Supposons que other_method est un identifiant que je passe dans le contrôleur show, comme spécifié dans l'entrée d'itinéraire ci-dessus.

Edit:

Je a ajouté à haut:

map.connect 'assignments/send/', :controller => "assignments", :action => "send" 

et je suis maintenant obtenir cette erreur:

ArgumentError in AssignmentsController#show 

La route pour assignments/send est le premier declration pour l'une des contrôleur d'assignations

+0

Je pense que vous pourriez manquer un argument requis après 'affectations/send /', peut-être 'affectations/send /: id' fonctionnerait? Il devrait presque certainement se terminer par une variable de quelque sorte pour sélectionner le modèle d'affectation? – dain

+0

Je n'utilise pas un modèle dans ce cas, pour être plus précis je prends quelques valeurs d'un formulaire et génère des emails à partir de celui-ci. – tipu

Répondre

1

Votre table de routage devrait avoir dans cet ordre

map.connect 'assignments/:external_id.:format', :controller => "assignments", :action => "show", :external_id => /\d{6}/ 

map.connect 'assignments/send/', :controller => "assignments", :action => "send" 

pour mettre fin à

map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 

que votre cas le plus général.

0

Pour ce deuxième cas, assurez-vous que les mappages sont évalués de haut en bas (le premier match est exécuté).

+0

donc le plus "vague" des routes devrait être placé au fond? – tipu

+0

exactement, habituellement cela étant juste le map.resources: controller – dain