2010-11-25 12 views
1

Wenn ich einen Controller habe, wie kann ich ihn mit neu hinzugefügten Methoden über URL aufrufen?Hinzufügen und Zugreifen auf Controller in Ruby on Rails

Grund Ich bin verwirrt, weil ich eine Route haben,

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

Es scheint, dass ich keine andere Methode innerhalb des assignments Controller zugreifen kann, weil, wenn ich tun

mysite.com/assignments/other_method 

Es Ich nehme an, dass other_method eine ID ist, die ich in die show-Steuerung übergebe, wie im obigen Routeneintrag angegeben.

Edit:

Ich habe diese nach oben:

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

und jetzt bin immer diese Fehlermeldung:

ArgumentError in AssignmentsController#show 

Die Route für assignments/send ist die erste declration für einen der Zuweisungen Controller

+0

Ich denke, Sie könnten ein erforderliches Argument nach "Zuweisungen/senden /" fehlen, vielleicht "Zuweisungen/senden /: ID" würde funktionieren? Es sollte fast sicher mit einer Variablen enden, die das Zuordnungsmodell auswählt? – dain

+0

Ich benutze kein Modell in diesem Fall, um genauer zu sein, nehme ich einige Werte aus einem Formular und generiere E-Mails daraus. – tipu

Antwort

1

Ihre Routing-Tabelle sollte es in dieser Reihenfolge hat

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

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

mit

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

als allgemeinsten Fall zu beenden.

0

Geben Sie einfach die richtige Route pat Achten Sie darauf, dass die Zuordnungen von oben nach unten ausgewertet werden (die erste Übereinstimmung wird ausgeführt).

+0

also die "vage" Routen sollten auf der Unterseite platziert werden? – tipu

+0

genau, in der Regel das ist nur die map.resources: Controller – dain