2010-11-07 12 views
7

Ich mag diese hierWie bekomme ich nur die Abfragezeichenfolge in einer Rails-Route?

match "/v1/:method" => "v1#index" 

Meine Absicht eine Route verwende ist den Namen der api Methode erfassen und dann in der Steuerung die Anforderung an diese Methode senden.

Ich dachte, dies würde die anderen Parameter als ein Argument für die Methode senden, aber es hat nicht funktioniert. Also meine Frage ist, wie kann ich die Nicht-Methode Parameter in einer Abfrage-String übergeben?

+0

+1. Interessant. – Zabba

Antwort

7

#query_parameters tut genau das, was Sie wollen:

request.query_parameters 

Es ist auch die effizienteste Lösung da es keinen neuen Hash erstellt, wie die anderen.

6

Ich löste Art dieses Problem, indem dies zu tun:

aus der Arbeit eines Kollegen
params.except("method","action","controller") 
14

Stolen. Das finde ich eine etwas robustere Lösung, da es auch funktioniert, wenn es Änderungen an den Pfadparameter:

params.except(*request.path_parameters.keys) 
+0

Dies sollte die akzeptierte Antwort sein –

+0

@ChrisBeck Es gibt einen noch besseren Weg. Siehe meine Antwort. – Agis

+0

In der Tat. Viel einfacher zu verstehen. –

Verwandte Themen