使用Rails中的GET参数为外部站点创建URL

时间:2011-11-24 02:12:36

标签: ruby-on-rails ruby-on-rails-3 get

我在Rails中发了一条推文。我需要生成的URL看起来像这样:

http://twitter.com/share?url=http%3A%2F%2Fexample.com&text=Hello%20World

但有点复杂。基本上是一个附加了GET参数的URL

使用Rails的一个帮助程序来生成此链接会很好,例如:

url_for("http://twitter.com/share", :url => "http://example.com", :text => "Hello world")

但我没有发现任何可行的东西。有人有什么想法吗?

3 个答案:

答案 0 :(得分:61)

你可以在rails中调用to_query来处理url编码等等。所以可能是这样的:

params = {
  :a => "http://google.com",
  :b => 123
}
url = "http://example.com?#{params.to_query}"

答案 1 :(得分:3)

我喜欢布莱恩的回答。这是一种方法的形式,以防其他人遇到这种情况。

  def url_with_attributes_from_hash(url = "", attr_hash = {})
    url == "" or attr_hash == {} ? "#{url.to_s}" : "#{url.to_s}?#{attr_hash.to_query}"
  end

答案 2 :(得分:1)

为此编写自己的帮助程序将是一行简单的代码:

def twitter_url_for(url, text)
  link_to "Share this url", "http://twitter.com/share?url=#{url}&text=#{text}"
end