2012-05-31 6 views
5

Ich versuche, zwei Links zu schreiben für & Aktionen genehmigen ablehnen, aber ich weiß nicht, wie die richtige Route,Schienen 3.2, wie Route für HTTP-Verb geschrieben wird, und verwenden Sie es in link_to?

meine route.rb

put 'approve_class_room/:id(.:format)', :to => 'class_room_member_ships#approve' 
put 'reject_class_room/:id(.:format)', :to => 'class_room_member_ships#reject' 

aber in Rake Routen schreiben Ich bekomme:

PUT /approve_class_room/:id(.:format) class_room_member_ships#approve 
PUT /reject_class_room/:id(.:format) class_room_member_ships#reject 

also, was wäre der richtige link_to Pfad?

meine Verbindung ist

= link_to 'approve', approve_class_room_path 

es wird nicht die Arbeit, die ich erhalten:

undefined local variable or method `approve_class_room_path' 

ps: Ich versuche, die link_to zu haben funktioniert AJAX verwenden, die genehmigen auf der gleichen Seite zu tun , AM Ich bin auf dem richtigen Weg? Was wäre der link_to Pfad?

Irgendeine Idee bitte?

Antwort

6

Zuerst den Fehler löschen müssen Sie named routes verwenden:

put 'approve_class_room/:id(.:format)', :to => 'class_room_member_ships#approve', 
             :as => :approve_class_room 
put 'reject_class_room/:id(.:format)', :to => 'class_room_member_ships#reject', 
             :as => :reject_class_room 

, dann eine PUT-Anfrage durchzuführen, müssen Sie die :method Option in Ihrem link_to Aufruf enthalten:

link_to 'approve', approve_class_room_path, :method => :put 
link_to 'reject', reject_class_room_path, :method => :put 

Wenn Sie ein 404 erhalten, die anstelle einer PUT-Anfrage in einer GET-Anfrage ergibt, ist es, weil die :method => :put Option verließ sich auf JavaScript. Sie müssen sicherstellen, dass jquery-rails ordnungsgemäß in Ihre App integriert ist.

+0

danke Matt, kannst du bitte den (.: format) Teil in den genannten Routen erklären? – simo

+0

Da '(.: Format)' in Klammern steht, handelt es sich um einen optionalen Teil der URL-Zeichenfolge für die Route. Das "." ist statisch, während das ": Format" die eigentliche Option ist. Rails wird standardmäßig als "html" formatiert, aber Sie können auf "approve_class_room/5.xml", "approve_class_room/5.json" usw. zugreifen, vorausgesetzt, Sie haben Ihre Rails-App für diese Formate konfiguriert. Schaut euch [respond_to] (http://apidock.com/rails/ActionController/MimeResponds/responder_to) und [respond_with] (http://apidock.com/rails/ActionController/MimeResponds/respond_with) an, wenn ihr Interesse habt mehrere Formate. –

+0

danke Matt, ich werde das überprüfen – simo

1

Dies kann nicht diesen Fehler beheben, aber da die Anforderung eine Put ist, müssen Sie das im link_to angeben: Das

= link_to 'approve', approve_class_room_path, :method => :put 

Für die Route, denken Hinzufügen würde ich die Fehler weggehen:

put 'approve_class_room/:id(.:format)', :to => 'class_room_member_ships#approve', :as => :approve_class_room 
+1

danke, Bill, obwohl Ihre Antwort richtig ist, habe ich nicht den ": as =>: approve_class_room" Teil an erster Stelle, nur wenn ich die Bildlaufleiste scrollte, möchte ich zwei Antworten als richtig markieren , also hier ist ein up vote :-) – simo