ruby-on-rails - 在 Ruby on Rails 中增量构建任意 URL

标签 ruby-on-rails ruby

我有一个字符串形式的 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"

关于ruby-on-rails - 在 Ruby on Rails 中增量构建任意 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8039735/

相关文章:

ruby-on-rails - Rails,使用 build 创建嵌套对象,但未保存

ruby-on-rails - 多态关联

ruby-on-rails - 使用多个数据库测试 Rails 应用程序

ruby - 需要帮助来理解这段代码

ruby-on-rails - Rails 应用程序在下订单和更改交付状态后不发送电子邮件,它只是崩溃了

ruby-on-rails - 安装 gem 时出错,无法构建 gem native 扩展——无法加载此类文件——mkmf

ruby-on-rails - Rails Sortable 的 ActiveSupport::MessageVerifier::InvalidSignature 错误

ruby-on-rails - Rails 5 不加载供应商/ Assets /javascripts 目录中的 js 文件

ruby-on-rails - Capistrano 开发部署失败

Javascript onclick 不适用于动态生成的 Rails 元素?