2010-11-07 74 views
7

我使用這樣的如何在Rails路由中只獲取查詢字符串?

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

我的意圖的路線這裏是捕捉API方法的名稱,然後將請求發送到控制器內部的方法。

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

我想這會派其他參數作爲參數的方法,但沒有奏效。所以我的問題是如何傳遞查詢字符串中的非方法參數?從同事的工作

params.except("method","action","controller") 
+0

+1。有趣。 – Zabba 2010-11-07 05:41:33

回答

7

#query_parameters不正是你想要什麼:

request.query_parameters 

這也是最有效的解決方案因爲它不像其他人那樣構造新的散列。

6

我有點通過這樣做解決了這個問題。我該找一個稍微強大的解決方案,因爲即使有變化的路徑參數,它會工作:

params.except(*request.path_parameters.keys) 
14

被盜:

+0

這應該是被接受的答案 – 2015-11-18 11:49:16

+0

@ChrisBeck還有更好的方法。看到我的答案。 – Agis 2016-12-06 14:52:41

+0

確實。更容易推理。 – 2016-12-07 17:20:59