Подтвердить что ты не робот

Как сделать перенаправление в route.rb, передавая строку запроса

У меня была функция redirect на моих маршрутах. rb вот так:

match "/invoices" => redirect("/dashboard")

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

/invoices?show=overdue

будет перенаправлен на

/dashboard?show=overdue

Я пробовал несколько вещей. Самое близкое, что у меня есть:

match "/invoices?:string" => redirect("/dashboard?%{string}")

который дает мне правильный результат, но с исходным URL-адресом, все еще отображаемым в браузере.

Я уверен, что мне не хватает чего-то довольно простого, но я не вижу, что.

4b9b3361

Ответ 1

Вы можете использовать объект запроса в этом случае:

match "/invoices" => redirect{ |p, request| "/dashboard?#{request.query_string}" }

Ответ 2

Самый простой способ сделать это (по крайней мере, в Rails 4) - использовать режим опций для перенаправления вызовов.

get '/invoices' => redirect(path: '/dashboard')

Это ТОЛЬКО изменяет компонент пути и оставляет параметры запроса самостоятельно.