Подтвердить что ты не робот

Создание URL-адреса для внешнего сайта с параметрами GET в Rails

Я делаю Tweet Это ссылка в Rails. URL-адрес, который мне нужно создать, выглядит примерно так:

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

но немного сложнее. В основном URL с загрузкой параметров GET

Было бы неплохо использовать один из помощников Rails, чтобы сгенерировать эту ссылку, например:

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

Но я не нашел ничего, что сработает. У кого-нибудь есть идеи?

4b9b3361

Ответ 1

Вы можете вызвать to_query на Hash в рельсах, который позаботится о кодировке url и т.д. Так что может быть что-то вроде этого:

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

Ответ 2

Написание собственного помощника для этого было бы одной простой строкой кода:

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

Ответ 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