Alt etki alanı değerini raylarda nasıl alabilirim, bunun için yerleşik bir yol var mı?Alt etki alanı değeri bir URL'den nasıl alınır?
örn.
test123.example.com
URL'nin test123 bölümünü istiyorum.
Alt etki alanı değerini raylarda nasıl alabilirim, bunun için yerleşik bir yol var mı?Alt etki alanı değeri bir URL'den nasıl alınır?
örn.
test123.example.com
URL'nin test123 bölümünü istiyorum.
Rails 3.0, bu özelliğe sahiptir, alt alana request.subdomain
'dan erişebilirsiniz.
Sen alt etki dayalı da rota yapabilirsiniz:
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
Eğer 2.3 kullanıyorsanız, size subdomain-fu gibi bir eklenti kullanmak gerekir. Aynı zamanda, iyi bir eklenti olan
Rack Middleware kullanırken bunu yapmanın bir yolu var mı? request.subdomain sadece mevcut değil request.host – cman77
@ cman77 [Bu] gibi bir şey deneyebilirsiniz (http://tannerburson.com/2009/01/extracting-subdomains-in-sinatra.html/) veya [rack- Daha karmaşık durumlar için alt alan adı] (https://github.com/mattt/rack-subdomain). –
Bu geliştirme aşamasında mı çalışıyor? – Noz
account_location da iyi bir eklentidir. Bunu kullandıktan sonra, hesabı farklı alt alanlara göre bulabilirsiniz. Ve kodunuzda sadece
request.subdomains(0).first
yazarak URL'den subdomain bulabilirsiniz.
SubdomainFu plugin'u kullanabilirsiniz. Bu eklenti, uygulamanızın current_subdomain öğesini döndüren bir current_subdomain yöntemi sunar.
Ayrıca bu size alt alanlardan bir dizi verecektir Ayrıca request.subdomains
kullanabilirsiniz this Railscast
GÜNCELLEME
bir göz olabilir.
config/environments/development.rb
içine config.action_dispatch.tld_length = 0
koyun ve her şeyi çalışması gerekir: Kumandanızda içinde Basit
sadece aşağıdaki WEBrick kullanarak localhost üzerinde alt alanları almak isteyen herkes için
unless request.subdomains.any?
#No domains available redirect
redirect_to subdomain: 'www'
end
yok.
Bağlantı SO burada yayınlamak için: Can I make Rails/WEBrick recognize entries in /etc/hosts as subdomains (instead of domains)?
Bağlantı Github yazılan: durumunda https://github.com/rails/rails/issues/12438
bir dize ile çalışan ve gerçek bir URI olabilir varsayarak, sen bunu yapabilirsiniz alt etki alanını ayıkla.
require 'uri'
uri = URI.parse('http://test123.example.com')
uri.host.split('.').first
=> "test123"
Rails, bunu zaten yapan bir fonksiyona sahip olduğu için -1 kazandığından, bu, tekerleği yeniden icat eder ve hatalara daha yatkın olabilir. – corvuszero
+1 çünkü bir dizeyi ayrıştırmam gerekiyordu. 'Request.referrer''i ayrıştırmaya çalışıyordum. @corvuszero'yu dinleme. Soru belli değildi. Teşekkürler! –
kullanın controller içerisinde şu yöntem
request.subdomains
Bu partiye geç ama burada biraz ben eski sürümlerinde kullanılan budur alt alanlar
'request.subdomain' bir dizi döndürmez. 'request.subdomains' yapar. Birden çok alt alan adına dikkat edin. –
İyi göz, cevabı güncelledim. –
bir dizi döndürür rayların.
subdomain = rquest.subdomains.join('.')
normal bir ifade kullanarak sakıncası
yeni sürümlerinde geriye dönük uyumlu olmalıdır? –
Sanırım bu, bir dizenin yanı sıra mevcut URL'nin alt etki alanını bulmak için bir çözüm sağlayarak daha iyi yanıtlanabilir. Bunu göz önünde bulundurursak google'da arama sonucu google'da # 1 sonuç elde edilir "raylar bir URL'nin alt etki alanını alır" – Joshua