Нужно посмотреть, есть ли элегантное решение для добавления параметра к каждому запросу GET на основе значения сеанса в приложении Rails.(4.2.6 при необходимости)
Пример:
У нас есть переменная сеанса session[:test] = 123
session[:test] = 123
Пользователь делает запросto example.com/random_path
Мы бы хотели, чтобы запрос всегда добавлял параметр "?test=#{session[:test]}"
"?test=#{session[:test]}"
Таким образом, пользователь будет перенаправленto example.com/random_path?test=123
Рад услышать любые идеи по этому поводу - спасибо!
Если вы хотите, чтобы сгенерированные URL-адреса этого пути всегда содержали определенный параметр при их создании, вы можете написать свой собственный url_for или link_to помощник для этого конкретного маршрута или переопределить default_url_options и установитьэтот параметр, если действие или имя контроллера соответствуют некоторому условию:
url_for
link_to
default_url_options
class ApplicationController < ActionController::Base def default_url_options(options = {}) if controller_name == 'my_controller' options[:test] = session[:test] end options end end
Маршруты могут быть сгенерированы как:
random_path(random, test: session[:test])
Он будет перенаправлен на:
example.com/random_path?test=123
, где test = session [: test]
Будет ли redirect_to решением проблемы?См. Код ниже:
redirected_url = "https://foo.com? Test = # {session [: test]}" redirect_to redirected_url
redirected_url = "https://foo.com? Test = # {session [: test]}"
redirect_to redirected_url
Надеюсь, это поможет ....