Ответ 1
Вы можете использовать объект запроса в этом случае:
match "/invoices" => redirect{ |p, request| "/dashboard?#{request.query_string}" }
У меня была функция redirect на моих маршрутах. rb вот так:
match "/invoices" => redirect("/dashboard")
Теперь я хочу добавить строку запроса к этому, чтобы, например,
/invoices?show=overdue
будет перенаправлен на
/dashboard?show=overdue
Я пробовал несколько вещей. Самое близкое, что у меня есть:
match "/invoices?:string" => redirect("/dashboard?%{string}")
который дает мне правильный результат, но с исходным URL-адресом, все еще отображаемым в браузере.
Я уверен, что мне не хватает чего-то довольно простого, но я не вижу, что.
Вы можете использовать объект запроса в этом случае:
match "/invoices" => redirect{ |p, request| "/dashboard?#{request.query_string}" }
Самый простой способ сделать это (по крайней мере, в Rails 4) - использовать режим опций для перенаправления вызовов.
get '/invoices' => redirect(path: '/dashboard')
Это ТОЛЬКО изменяет компонент пути и оставляет параметры запроса самостоятельно.