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''