我在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")
但我没有发现任何可行的东西。有人有什么想法吗?
答案 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