2010-11-07 18 views
7

Burada buRails rotasında yalnızca sorgu dizesini nasıl alabilirim?

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

Benim niyeti gibi bir rota kullanıyorum Kontrolörün içinde o yönteme isteği göndermek sonra api yönteminin adını yakalamak ve olduğunu.

def index 
    self.send params[:method], params 
end 

Bu yönteme bağımsız değişken olarak diğer parametreleri göndermek düşündüm, ama işe yaramadı. Yani benim sorum, bir sorgu dizesindeki yöntem dışı parametreleri nasıl iletebilirim?

+0

+1. İlginç. – Zabba

cevap

7

#query_parameters tam olarak ne istediğinizi yapar:

request.query_parameters 

Ayrıca, en verimli çözüm Ben yol parametrelerine değişiklikler olsa bile o iş olacağından, bu biraz daha sağlam çözüm bulmak Diğerleri gibi yeni bir karma oluşturmaz.

6

Bir çeşit yaparak bu sorunu çözdü:

params.except("method","action","controller") 
14

kaypak bir meslektaşının işten.

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

Bu kabul edilen yanıt olmalıdır –

+0

@ChrisBeck Daha da iyi bir yol var. Cevabımı gör. – Agis

+0

Gerçekten. Nedeniyle çok daha kolay. –

İlgili konular