Можно ли перенаправить обратно к ссылочному URL с новым параметром в строке запроса?
что-то вроде этого:
redirect_to :back, custom_param='foo'
Можно ли перенаправить обратно к ссылочному URL с новым параметром в строке запроса?
что-то вроде этого:
redirect_to :back, custom_param='foo'
Вы можете поместить его в сеанс, а затем перенаправить обратно
session[:somekey] = value
redirect_to :back
Попробуйте следующее:
# get a URI object for referring url
referrer_url = URI.parse(request.referrer) rescue URI.parse(some_default_url)
# need to have a default in case referrer is not given
# append the query string to the referrer url
referrer_url.query = Rack::Utils.parse_nested_query(referrer_url.query).
# referrer_url.query returns the existing query string => "f=b"
# Rack::Utils.parse_nested_query converts query string to hash => {f: "b"}
merge({cp: 'foo'}).
# merge appends or overwrites the new parameter => {f: "b", cp: :foo'}
to_query
# to_query converts hash back to query string => "f=b&cp=foo"
# redirect to the referrer url with the modified query string
redirect_to referrer_url.to_s
# to_s converts the URI object to url string
Другой подход может состоять в том, чтобы передать его через "flash" (он автоматически исчезает после запроса перенаправления):
flash[:somekey] = 'some value'
redirect_to :back
Однако, как заметил один из моих коллег, лучшим способом, вероятно, является его возвращение в качестве параметра запроса, чтобы сохранить его без учета состояния и выделить два URL-адреса. Кажется, что это не очень хороший встроенный Rails способ, который заставляет меня задаться вопросом, что еще не так с этим подходом.