How do I get only the query string in a Rails route?

余生长醉 提交于 2020-01-01 08:57:12

问题


I am using a route like this

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

My intention here is capture the name of the api method and then send the request to that method inside the controller.

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

I figured this would send the other parameters as an argument to the method, but it didn't work. So my question is how can I pass the non-method parameters in a query string?


回答1:


#query_parameters does exactly what you want:

request.query_parameters

It's also the most efficient solution since it doesn't construct a new hash, like the other ones do.




回答2:


Stolen from the work of a colleague. I find this a slightly more robust solution, since it will work even if there are changes to the path parameters:

params.except(*request.path_parameters.keys)



回答3:


I sort of solved this problem by doing this:

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


来源:https://stackoverflow.com/questions/4116545/how-do-i-get-only-the-query-string-in-a-rails-route

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!