通常 rails 神奇地解码所有 params
。现在我得到了一个执行 params="value="+encodeURIComponent('ab#cd');
的 javascript,然后调用 http://server/controller?value=ab%23cd
。如果我在我的 Controller 中访问 params[:value]
,它包含 ab%23cd
而不是我期望的 ab#cd
。
如何解决?为什么 Rails 不自动解码这个参数?
最佳答案
Rails 使用以下逻辑“自动”处理参数。
如果请求是 GET 它将解码查询字符串中的任何内容:
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
我怀疑您看到这个问题是因为您在 POST
请求而不是 GET
请求中包含查询字符串,因此 Rails 没有解码查询字符串。
关于javascript - Encodeuricomponent 在 rails 中解码它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13038841/