34

私は、ユーザーがアカウントを作成できるWebサイトに取り組んでいます。ユーザーを作成するときの属性の1つは、ユーザーの個人用Webサイトです。私がこのようにユーザーのウェブサイトを使おうとすると:

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

生成されるURLは次のとおりです。http://0.0.0.0:3000/www.userswebsite.com

これはlink_toの@user部分が原因だと思います...しかし、どうすればこれをwww.userwebsite.comにリンクさせることができますか?

4

4 に答える 4

97

存在しない場合は、プロトコルを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'
于 2011-02-16T20:50:05.720 に答える
28

リンクにプロトコルを貼り付ける必要があるようです。たとえば、データベースにwww.userswebsite.comがある場合は、http: //www.userswebsite.comになります。

于 2011-02-16T03:22:35.433 に答える
3

http://なしでURLを保存しているため、相対URLとして解釈されます。これを試してください:link_to @ user.site、 " http://# {@ user.url}"

于 2015-02-10T09:03:33.547 に答える
1

素晴らしい宝石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"
于 2016-02-14T20:18:59.390 に答える