有没有办法使用ActiveResource管理URL编码?具体来说,我正在寻找一种方法来传递电子邮件地址作为参数。
目前我的查询失败,因为@
符号的网址编码为%40
,导致远程应用上的查找失败。
例如,以下关于ActiveResource模型的查询Person
...
Person.all(:from => :remote_find_by_email, :params => {:email => "john@example.com")
生成以下网址
http://example.com/people/remote_find_by_email.xml?email=john%40example.com
或者,在执行查找之前,远程应用程序应该做些什么来解码参数?
更新
感谢eks,我添加了以下方法,然后过滤到远程应用上的控制器:
before_filter :cgi_unescape_params, :only => [:remote_find_by_email]
private
def cgi_unescape_params
params.each { |k, v| params[k] = CGI.unescape(v) }
end
答案 0 :(得分:1)
尝试在远程端使用CGI :: unescape,它应该处理任何%编码值。干杯!