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

pic*_*rdo 9 routing ruby-on-rails-3

我正在使用这样的路线

match "/v1/:method" => "v1#index"
Run Code Online (Sandbox Code Playgroud)

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

def index
    self.send params[:method], params
end
Run Code Online (Sandbox Code Playgroud)

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

小智 14

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

params.except(*request.path_parameters.keys)
Run Code Online (Sandbox Code Playgroud)


Agi*_*gis 13

#query_parameters 完全符合你的要求:

request.query_parameters
Run Code Online (Sandbox Code Playgroud)

它也是最有效的解决方案,因为它不像其他的那样构造新的哈希.


pic*_*rdo 7

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

params.except("method","action","controller")
Run Code Online (Sandbox Code Playgroud)