2013-10-02 19 views
12

Sorgu dizesinde yeni bir param ile yönlendiren URL'ye yeniden yönlendirmek mümkün mü? Böyleraylar 4 yeni params ile yeniden yönlendirme

şey:

redirect_to :back, custom_param='foo' 
+0

"Geri" derken, kullanıcının nereden geldiğini veya geri döndüğü bir eylem mi demek istediniz? – tihom

+0

ilk ==>: geri – user1066183

+0

anlamı daha net yapmak için soruyu düzenlediniz. – tihom

cevap

5

Sen Deneyin oturumda koymak ve sonra geri

session[:somekey] = value 
redirect_to :back 
+0

neden işe yarayacak ?? – user1066183

+0

Oturum kullandığınızda, oturumdaki değerler isteklerin arasında kalır. – techvineet

+1

evet ama ben paramizi linke koymam gerek, buna benzer: http: // localhost: 3000 /? Locale = 'pt' – user1066183

5

yönlendirebilirsiniz bu:

# 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 
+0

Burada bir tane var. 'Rack :: Utils.parse_nested_query (referrer_url.query)', dizili anahtarlarla bir karma döndürür. Yani 'referrer_url'unuz mevcut sorgu dizesi olarak' cp = bar' içeriyorsa. URL'nin sorgusu şu şekilde olacaktır: 'cp = bar & cp = foo'. Rack :: Utils.parse_nested_query (referrer_url.query) 'işlevini Rack :: Utils.parse_nested_query (referrer_url.query) .symbolize_keys.' veya" Rack :: Utils.parse_nested_query (referrer_url.query) .stringify_keys "olarak değiştirin. – DickieBoy

1

başka bir yaklaşım yoluyla geçmek olabilir "flash" (yönlendirme isteğinden sonra otomatik olarak gider):

Ancak, meslektaşlarımdan birinin belirttiği gibi, daha iyi bir yol muhtemelen bir sorgu paramisi olarak geri döndürmek, vatansız tutmak ve iki URL'yi ayırmaktır. Görünüşe göre güzel, yerleşik bir Rails yolu yok, bu da bana bu yaklaşımın neyin yanlış olduğunu merak ediyor.