レールでサブドメインの値を取得する方法はありますか?これを行うための組み込みの方法はありますか?URLからサブドメインの値を取得するにはどうすればよいですか?
test123.example.com
urlのtest123部分が必要です。
レールでサブドメインの値を取得する方法はありますか?これを行うための組み込みの方法はありますか?URLからサブドメインの値を取得するにはどうすればよいですか?
test123.example.com
urlのtest123部分が必要です。
Rails 3.0にはこの機能が組み込まれており、request.subdomain
からサブドメインにアクセスできます。
あなたがサブドメインに基づいてもルートすることができます:
class SupportSubdomain
def self.matches?(request)
request.subdomain == "support"
end
end
Basecamp::Application.routes do
constraints(SupportSubdomain) do
match "/foo/bar", :to => "foo#bar"
end
end
あなたが2.3を使用している場合は、subdomain-fuのようなプラグインを使用する必要があります。
account_locationも良いプラグインです。それを使用した後、異なるサブドメインに基づいてアカウントを見つけることができます。そして、あなたのコードに
request.subdomains(0).first
と書くだけで、URLからサブドメインを見つけることができます。
SubdomainFu pluginを使用できます。このプラグインは、あなたのアプリのcurrent_subdomainを返すcurrent_subdomainメソッドを提供します。
UPDATE
を見ているあなたも、これはあなたのサブドメインの配列を与えるrequest.subdomains
を使用することができます。
config/environments/development.rb
にconfig.action_dispatch.tld_length = 0
を入れ、すべて動作するはずです:あなたのコントローラでシンプル
だけで、次のWEBrickにを使用して、ローカルホスト上のサブドメインを取得するために探している人のために
unless request.subdomains.any?
#No domains available redirect
redirect_to subdomain: 'www'
end
を使用すると、文字列での作業、そして、それは本当のURI可能と想定されている場合は、あなたがこれを行うことができますので、ここで投稿する
リンクサブドメインを抽出します。
require 'uri'
uri = URI.parse('http://test123.example.com')
uri.host.split('.').first
=> "test123"
Railsはすでにこれを行う組み込み関数を持っているので-1を与えます。これにより、ホイールが再現され、エラーが発生しやすくなります。 – corvuszero
+1私は実際に文字列を解析する必要があったため+1します。私は 'request.referrer'を解析しようとしていました。 @corvuszeroを聞かないでください。問題は具体的ではありませんでした。ありがとう! –
これは少し遅れてのパーティにサブドメイン
'request.subdomain'は配列を返しません。 'request.subdomains'は行います。複数形のサブドメインに注意してください。 –
良いアイ、答えを更新しました。 –
の配列を返しますが、ここで私は古いバージョンで使用されるものだ
request.subdomains
あなたのコントローラ内の次のメソッドを使用しますレールの。
subdomain = rquest.subdomains.join('.')
これは、正規表現を使用して、新しいバージョン
あなた心の中で下位互換性をすべきですか? –
これは、現在のURLだけでなく文字列のサブドメインを見つけるためのソリューションを提供することによって、より良い答えになると思います。これを考慮すると、検索のためのGoogleの#1の結果 "レールはサブドメインを取得する" – Joshua