我向rails发了一个ajax请求。网址是:
/learners/-638284588?is_combined_page=true&email=test0221k+staging@tt.com&type=ld"
在日志中,我看到了这些条目:
Started GET "/learners/-638284588?is_combined_page=true& email=test0221k+staging@rosettastone.com&type=lcd" for 127.0.0.1 at Fri Feb 23 09:31:56 -0500 2018
Processing by Extranet::LearnersController#show as HTML
Parameters: {"type"=>"ld", "email"=>"test0221k staging@tt.com", "is_combined_page"=>"true", "id"=>"-638284588"}
[WARNING] Audit logging has been enabled for Account
parameter ----------------> {"type"=>"lcd", "email"=>"test0221k staging@tt.com", "controller"=>"extranet/learners", "is_combined_page"=>"true", "action"=>"show", "id"=>"-638284588"} test0221k staging@tt.com
在网址中,email
参数显示为:
email="test0221k+staging@tt.com"
,其中有+
个符号。但是当我从params[:email]
读取参数时,它打印为:
"email"=>"test0221k staging@tt.com"
其中+
被空格替换。
为什么rails会用空格覆盖+
?
如何避免此"test0221k staging@tt.com"
并获取"test0221k+staging@tt.com"
?
答案 0 :(得分:6)
这是由URL规范定义的。 Rails刚刚确认了该规范。
在将参数放入URL之前,需要对参数进行编码。这样做的简单方法是在JavaScript中调用encodeURIComponent()
。
表单会自动为您执行此编码。