2012-10-23 23 views
4

正常情況下,軌道神奇地解碼所有params。現在我收到了一個javascript,它的確如此,然後調用http://server/controller?value=ab%23cd。如果我在我的控制器中訪問params[:value],它包含ab%23cd而不是我所期望的ab#cdEncodeuricomponent在軌道上解碼它

如何解決這個問題?爲什麼rails沒有自動解碼這個參數?

+0

可能重複的[ruby/rails相當於javascript decodeURIComponent?](http://stackoverflow.com/questions/6457925/ruby-rails-equivalent-to-javascript-decodeuricomponent) – bfavaretto

+0

沒有重複,因爲我的問題是相關的params的自動解碼,而不是外部方法來實現這一點。 – gorootde

回答

3

Rails使用以下邏輯「自動地」處理參數。

如果請求得到它會在查詢字符串中的任何解碼:

GET http://server/controller?value=ab%23cd 
    On the server this will generate params['value'] as ab#cd 

如果請求是查詢字符串POST也不會對其進行解碼:

POST http://server/controller?value=ab%23cd 
    On the server this will generate params['value'] as ab%23cd 

如果請求是帶有數據參數的POST,它將對其進行解碼:

POST http://server/controller 
    data: value=ab%23cd 
    On the server this will generate params['value'] as ab#cd 

我懷疑你是s回答這個問題是因爲你的查詢字符串包含POST請求而不是GET請求,所以Rails沒有解碼查詢字符串。