RAILS link_to 外部站点,url 是用户表的属性,例如:@users.website

发布于 2024-10-17 11:59:27 字数 268 浏览 6 评论 0原文

我正在开发一个允许用户创建帐户的网站。创建用户时的属性之一是用户的个人网站。当我尝试像这样使用用户网站时:

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

生成的网址是: http://0.0.0.0:3000/www.userswebsite.com

我认为这是因为 @user 部分link_to... 但我怎样才能让它链接到 www.userwebsite.com ?

I'm working on a website that allows users to create an account. One of the attributes when creating a user is a users personal website. When I try to use the users website like this:

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

The url that gets generated is: http://0.0.0.0:3000/www.userswebsite.com

I think this is because of the @user part of the link_to... but how can I get this to link to www.userwebsite.com ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

软甜啾 2024-10-24 11:59:27

如果协议不存在,您可以在 url 前面加上协议:

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

然后:

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

You can prepend url with protocol if it's absent:

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

And then:

link_to @user.site, url_with_protocol(@user.url), :target => '_blank'
笙痞 2024-10-24 11:59:27

看起来您需要将协议粘贴在链接上。例如,您的数据库中有 www.userswebsite.com,它应该是 http://www.userswebsite.com

Looks like you need to stick the protocol on your link. E.g. you have www.userswebsite.com in your database, it should be http://www.userswebsite.com

恰似旧人归 2024-10-24 11:59:27

您存储的 URL 不带 http://,因此它们被解释为相对 URL。
试试这个:
link_to @user.site, "http://#{@user.url}"

You are storing URLs without the http:// so they are being interpreted as relative URLs.
Try this:
link_to @user.site, "http://#{@user.url}"

末蓝 2024-10-24 11:59:27

尝试一下很棒的 gem Domainatrix

然后你可以简单地动态解析 URL:

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

更好的是,创建用户模型中的 before_save 操作,用于在保存之前解析 URL。

before_save :parse_url

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

以下是您可以使用 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"

Try out the awesome gem Domainatrix:

Then you can simply parse the URL on the fly with:

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

Better yet, create a before_save action in your user model that parses the url before saving it.

before_save :parse_url

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

Here are some samples of what you can do with 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"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文