如何只获取Rails路由中的查询字符串?

时间:2010-11-07 04:52:12

标签: ruby-on-rails-3 routing

我正在使用这样的路线

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

我的意图是捕获api方法的名称,然后将请求发送到控制器内的该方法。

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

我认为这会将其他参数作为参数发送给方法,但它不起作用。所以我的问题是如何在查询字符串中传递非方法参数?

3 个答案:

答案 0 :(得分:14)

从同事的工作中偷走了。我发现这是一个稍微强大的解决方案,因为即使路径参数发生了变化它也能正常工作:

params.except(*request.path_parameters.keys)

答案 1 :(得分:11)

#query_parameters完全符合您的要求:

request.query_parameters

它也是最有效的解决方案,因为它没有像其他人一样构建新的哈希值。

答案 2 :(得分:7)

我通过这样做解决了这个问题:

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