2009-11-13 50 views
10

由於Rails升級,我們只是使用了redirect_to中斷,並且導致了一個問題。我一直在嘗試,我似乎沒有找到一種方法來使用redirect_to將用戶發送到帶有查詢參數的非Rails頁面,除非手動構建URL字符串,這似乎是一種恥辱。此前,只是簡單:如何將redirect_to用於帶查詢參數的非Rails URL?

redirect_to "http://www.web.com/myurl" "parm" 

是工作 - 它附加「PARM」到URL,並多次被PARMS正確處理。這不再是這種情況,所以我想知道是否有新的/更好的方法來做到這一點。該文檔暗示,包括一個哈希應該工作,但它並不:

redirect_to ("http://www.web.com/myurl", :parm => "foo") 
redirect_to ("http://www.web.com/myurl", { :parm => "foo" }) 

無論是一期工程。手動構建URL字符串可以正常工作,但是有沒有人有一個咒語讓這個工作更好?

回答

3

根據documentationurl_for未識別的任何參數都被傳遞給Route模塊,因此從理論上說,除非您的參數覆蓋了它所尋找的默認參數之一,否則您的代碼應該可以工作。

然而,有一個:overwrite_params哈希,你可以推測傳遞:

redirect_to 'http://www.web.com/myurl', :overwrite_params => { :parm => 'foo' } 

希望這有助於。

+0

這不起作用。該字符串是直接使用的。 – deepak 2012-08-30 11:23:20

+0

@deepak您使用的是哪個版本的Rails?事情自2009年以來可能發生了很大的變化:-) – 2012-09-04 15:50:53

+1

在rails 3.2.8上試過,我認爲最新的穩定 – deepak 2012-09-05 16:56:34

0

運行Rails的5.0,發現這是最簡單的解決方案:

args = { foo: 'bar' } 
redirect_to 'https://otherwebsite.com/path?' + args.to_query 

,我這個頁面,工作指定主機時,被上發現的唯一的其他解決方案(見自己的崗位託弗方吉奧的評論)但是,如果原始網址位於不同的端口上(通常是開發環境的情況),您還必須指定端口。