4
正常情況下,軌道神奇地解碼所有params
。現在我收到了一個javascript,它的確如此,然後調用http://server/controller?value=ab%23cd
。如果我在我的控制器中訪問params[:value]
,它包含ab%23cd
而不是我所期望的ab#cd
。Encodeuricomponent在軌道上解碼它
如何解決這個問題?爲什麼rails沒有自動解碼這個參數?
正常情況下,軌道神奇地解碼所有params
。現在我收到了一個javascript,它的確如此,然後調用http://server/controller?value=ab%23cd
。如果我在我的控制器中訪問params[:value]
,它包含ab%23cd
而不是我所期望的ab#cd
。Encodeuricomponent在軌道上解碼它
如何解決這個問題?爲什麼rails沒有自動解碼這個參數?
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沒有解碼查詢字符串。
可能重複的[ruby/rails相當於javascript decodeURIComponent?](http://stackoverflow.com/questions/6457925/ruby-rails-equivalent-to-javascript-decodeuricomponent) – bfavaretto
沒有重複,因爲我的問題是相關的params的自動解碼,而不是外部方法來實現這一點。 – gorootde