Как получить только строку запроса в маршруте Rails? - PullRequest
8 голосов
/ 07 ноября 2010

Я использую такой маршрут

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

Мое намерение здесь состоит в том, чтобы захватить имя метода API и затем отправить запрос этому методу внутри контроллера.

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

Я полагал, что это отправит другие параметры в качестве аргумента методу, но это не сработало. Итак, мой вопрос, как я могу передать параметры не-метода в строке запроса?

Ответы [ 3 ]

14 голосов
/ 13 июня 2013

украдено с работы коллеги. Я считаю это несколько более надежным решением, так как оно будет работать, даже если есть изменения в параметрах пути:

params.except(*request.path_parameters.keys)
11 голосов
/ 27 февраля 2016

#query_parameters делает именно то, что вам нужно:

request.query_parameters

Это также самое эффективное решение, поскольку оно не создает новый хеш, как это делают другие.

7 голосов
/ 07 ноября 2010

Я вроде решил эту проблему, выполнив это:

params.except("method","action","controller")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...