18

是否可以使用查询字符串中的新参数重定向回引用 url?

像这样的东西:

redirect_to :back, custom_param='foo'
4

3 回答 3

8

尝试这个:

# 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
于 2013-10-02T22:44:30.273 回答
6

你可以把它放在会话中,然后重定向回来

session[:somekey] = value
redirect_to :back
于 2013-10-02T10:13:36.620 回答
3

另一种方法可能是通过“flash”传递它(它在重定向请求后自动消失):

flash[:somekey] = 'some value'
redirect_to :back

但是,正如我的一位同事所指出的,更好的方法可能是将其作为查询参数返回,以保持它无状态并区分两个 URL。似乎没有一种很好的内置 Rails 方法可以做到这一点,这让我想知道这种方法还有什么问题。

于 2015-01-20T21:34:56.163 回答