2010-11-07 80 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