ユーザーがアカウントを作成できる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にリンクできますか?
プロトコルをリンクに貼り付ける必要があるようです。例えば。データベースにwww.userswebsite.comがある場合、それは http://www.userswebsite.com である必要があります
URLがない場合は、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'
Http://なしでURLを格納しているため、相対URLとして解釈されます。これを試してください:link_to @ user.site、 " http://# {@ user.url}"
素晴らしい宝石を試してください 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"