ruby-on-rails – 在Ruby on Rails中逐步构建任意URL

我在字符串中有一个URL.添加一些参数的最简洁方法是什么?

例如

base = 'http://example.com'
uri1 = some_magical_method(base,:p1 => 'v1') # => http://example.com/?p1=v1
uri2 = some_magical_method(uri1,:p2 => 'v2') # => http://example.com/?p1=v1&p2=v2
uri3 = some_magical_method(uri2,:p3 => nil)  # => http://example.com/?p1=v1&p2=v2

1)在Ruby?

2)在Rails中?

解决方法

在Rails中,ActiveSupport可用,最简单的方法是构造一个哈希,然后在其上调用#to_query.
>> params = {}
>> params[:foo] = "bar"
>> params[:baz] = "bang"
>> params.to_query
=> "baz=bang&foo=bar"

在纯Ruby中,同样适用,但您需要自己编写编码器:

require 'cgi'
def to_query(hsh)
  hsh.map {|k,v| "#{k}=#{CGI::escape v}" }.join("&")
end

params = {}
params[:foo] = "bar"
params[:baz] = "bang"

to_query params
=> "baz=bang&foo=bar"

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...