有没有办法使用 ActiveResource 管理 URL 编码?具体来说,我正在寻找一种将电子邮件地址作为参数传递的方法。
目前我的查询失败,因为@
符号将 URL 编码为%40
,导致远程应用程序的查找失败。
例如,以下关于 ActiveResource 模型的查询Person
……</p>
Person.all(:from => :remote_find_by_email, :params => {:email => "john@example.com")
生成以下 URL
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