为什么 ruby 控制器会自己转义参数?
Why ruby controller would escape the parameters itself?
我正在为后端服务编写 Ruby 应用程序。有一个控制器可以接受来自前端的请求。
是这样的,有一个GET请求,参数中包含字符“\n”。
def register
begin
request = {
id: params[:key]
}
.........
end
end
"key" 参数从 AngularJs 传递为“----BEGIN----- \n abcd \n ----END----- \n”,但在 Ruby 控制器中,参数实际上变成了“----BEGIN----- \\n abcd \\n ----END----- \\n”。
有人对此有好的解决方案吗?
是的,这是因为 ruby 读取转义字符的方式。你可以在这里阅读解释:Escaping characters in Ruby
我遇到过一次这个问题,我只是使用 gsub!
将 \n
更改为 \n
。你应该做的是:
def register
begin
request = {
id: params[:key].gsub!("\n", "\n")
}
.........
end
end
记住,你必须使用双引号"
而不是单引号'
。从 link 我给了:
Ruby 中单引号和双引号字符串的区别在于字符串定义表示转义序列的方式。
在双引号字符串中,您可以编写转义序列,Ruby 将输出其翻译后的含义。 \n 变成换行符。
然而,在单引号字符串中,转义序列被转义并且 return 它们的字面定义。 \n 仍然是 \n.
我正在为后端服务编写 Ruby 应用程序。有一个控制器可以接受来自前端的请求。
是这样的,有一个GET请求,参数中包含字符“\n”。
def register
begin
request = {
id: params[:key]
}
.........
end
end
"key" 参数从 AngularJs 传递为“----BEGIN----- \n abcd \n ----END----- \n”,但在 Ruby 控制器中,参数实际上变成了“----BEGIN----- \\n abcd \\n ----END----- \\n”。
有人对此有好的解决方案吗?
是的,这是因为 ruby 读取转义字符的方式。你可以在这里阅读解释:Escaping characters in Ruby
我遇到过一次这个问题,我只是使用 gsub!
将 \n
更改为 \n
。你应该做的是:
def register
begin
request = {
id: params[:key].gsub!("\n", "\n")
}
.........
end
end
记住,你必须使用双引号"
而不是单引号'
。从 link 我给了:
Ruby 中单引号和双引号字符串的区别在于字符串定义表示转义序列的方式。
在双引号字符串中,您可以编写转义序列,Ruby 将输出其翻译后的含义。 \n 变成换行符。 然而,在单引号字符串中,转义序列被转义并且 return 它们的字面定义。 \n 仍然是 \n.