RAILS link do zewnętrznej strony, url jest atrybutem tabeli user, np.: @ users.strona www

Pracuję nad stroną, która umożliwia użytkownikom tworzenie konta. Jednym z atrybutów przy tworzeniu użytkownika jest osobista strona użytkownika. Kiedy próbuję używać strony użytkowników w ten sposób:

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

Generowany adres url to: http://0.0.0.0:3000/www.userswebsite.com

Myślę, że to z powodu @user części link_to... ale jak Mogę to zrobić link do www.userwebsite.com ?

Author: Enrico Susatyo, 2011-02-16

4 answers

Wygląda na to, że musisz trzymać protokół na swoim linku. Np. masz www.userswebsite.com w Twojej bazie powinno być http://www.userswebsite.com

 28
Author: cam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-16 03:22:35

Możesz przesłać adres url z protokołem, jeśli go nie ma:

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

A następnie:

link_to @user.site, url_with_protocol(@user.url), :target => '_blank'
 95
Author: Voldy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-05 14:30:44

Przechowujesz adresy URL bez http://, więc są one interpretowane jako względne adresy URL. Spróbuj tego.: link_to @ user.site, " http://#{@Użytkownik.url} "

 3
Author: Anshul Garg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-10 09:03:33

Wypróbuj niesamowity klejnot Domainatrix :

Następnie możesz po prostu przeanalizować adres URL w locie za pomocą:

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

Jeszcze lepiej, Utwórz akcję before_save w modelu użytkownika, która przetwarza adres url przed zapisaniem go.

before_save :parse_url

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

Oto kilka przykładów tego, co możesz zrobić z 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"
 1
Author: Abram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-14 20:18:59