2016-12-09 5 views
1

Ich habe 2 Routen alsDifferenzierung zwei Routen in Rails

get '/v1/cameras/:id' => 'cameras#single', as: :cameras_single 

und die eine andere ist

get "v1/cameras/map" => "cameras#map" 

Beide sind gestört zu werden, als ob ich cameras/map bin setzen, geht es zu camera/:id als Parameter Gibt es eine Möglichkeit, sie zu unterscheiden? jede Hilfe wird dankbar sein.

Antwort

3

Setzen Sie get "v1/cameras/map" => "cameras#map" über get '/v1/cameras/:id' => 'cameras#single', as: :cameras_single in routes.rb Datei.

Die Routendatei wird von oben nach unten gescannt und die erste übereinstimmende Route wird erstellt.

Hoffe, dass hilft!

+0

Ich habe es versucht, aber es gibt mir einen Fehler auf 'cameras_single' am Controller .. als' <% @ cameras.each do | camera | %> '' undefinierte Methode 'each 'für nil: NilClass' – ijunaidfarooq

+0

Hat es jetzt die richtige Aktion? – RSB

+0

nein, es ist nicht die einzige Vorlage auf der Kamera gehen. aber ich habe Methode Def Karte in Kameras Controller sowie – ijunaidfarooq

0

Die Schienen Routen-Datei gesucht wird und von oben nach unten angepasst, sie sind im Grunde die gleiche URL, beide verwenden bekommen und der Weg ist gleich im eigentlichen Sinne wird "v1/cameras/map" immer '/v1/cameras/:id, dass die :id von nur unter der Annahme überein Parameter ist map. Sie können den ersten Pfad zuerst kommen lassen, so wird v1/cameras/map immer zuerst schlagen dann wird jeder andere Pfad /v1/cameras/:id nicht mit dem ersten übereinstimmen, außer wenn :id = "maps". Wenn es möglich ist, dass :id gleich map sein kann, dann ist das Beste, nur die URL zu ändern, vielleicht durch Hinzufügen eines neuen Charakters oder so.