rails link_to link button_to ruby-on-rails ruby hyperlink external link-to

ruby-on-rails - button_to - rails link_to class



RAILS link_to external site, url es un atributo de la tabla de usuario, como: @ users.website (4)

Estoy trabajando en un sitio web que permite a los usuarios crear una cuenta. Uno de los atributos al crear un usuario es el sitio web personal de un usuario. Cuando trato de usar el sitio web de los usuarios de esta manera:

<%= link_to @user.site, @user.url %>

La URL que se genera es: http://0.0.0.0:3000/www.userswebsite.com

Creo que esto se debe a la parte @user del link_to ... pero ¿cómo puedo hacer para que esto se vincule a www.userwebsite.com?


Está almacenando URL sin http: //, por lo que se interpretan como URL relativas. Prueba esto: link_to @ user.site, " http: // # {@ user.url}"


Parece que debes pegar el protocolo en tu enlace. Por ejemplo, tiene www.userswebsite.com en su base de datos, debe ser http://www.userswebsite.com


Prueba la impresionante gema Domainatrix :

Luego, simplemente puede analizar la URL sobre la marcha con:

<%= Domainatrix.parse(@user.url).url %>

Mejor aún, cree una acción before_save en su modelo de usuario que analiza la URL antes de guardarla.

before_save :parse_url def parse_url if self.url self.url = Domainatrix.parse(self.url).url end end

Aquí hay algunas muestras de lo que puedes hacer con Domainatrix:

url = Domainatrix.parse("http://www.pauldix.net") url.url # => "http://www.pauldix.net" (the original url) url.public_suffix # => "net" url.domain # => "pauldix" url.canonical # => "net.pauldix" url = Domainatrix.parse("http://foo.bar.pauldix.co.uk/asdf.html?q=arg") url.public_suffix # => "co.uk" url.domain # => "pauldix" url.subdomain # => "foo.bar" url.path # => "/asdf.html?q=arg" url.canonical # => "uk.co.pauldix.bar.foo/asdf.html?q=arg"


Puede anteponer url con protocolo si está ausente:

module UrlHelper def url_with_protocol(url) /^http/i.match(url) ? url : "http://#{url}" end end

Y entonces:

link_to @user.site, url_with_protocol(@user.url), :target => ''_blank''