Запустите другой маршрут с помощью строки запроса внутри Sinatra - PullRequest
5 голосов
/ 31 января 2012

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

status, headers, body = call env.merge("PATH_INFO" => '/bar')

Однако он не отправляет строку запроса.Итак, я попробовал это:

status, headers, body = call env.merge(
    "PATH_INFO" => '/bar', 
    "QUERY_STRING" => 'param=1'
)

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

Мы используем Sinatra 1.3.1 и Rack 1.3.5.

Ответы [ 2 ]

4 голосов
/ 31 января 2012

Таким образом, решение состоит в том, чтобы очистить переменную @original_params.Ясно, что даже если он появляется в Sinatra README, это не поддерживается.Если позволяет время, я переделываю свои маршруты, так что это не требуется, но вот, пожалуйста.

@original_params = nil
status, headers, body = call env.merge(
    "PATH_INFO" => '/bar', 
    "QUERY_STRING" => 'param=1'
)
0 голосов
/ 31 января 2012

Вы можете добавить параметры для маршрута следующим образом "/bar?param=1&anotherparam=3"

...