¿cómo puedo obtener el valor del subdominio en los rieles, hay una forma integrada de hacerlo?¿Cómo obtener el valor de subdominio de una url?
p. Ej.
test123.example.com
Quiero la parte test123 de la url.
¿cómo puedo obtener el valor del subdominio en los rieles, hay una forma integrada de hacerlo?¿Cómo obtener el valor de subdominio de una url?
p. Ej.
test123.example.com
Quiero la parte test123 de la url.
Rails 3.0 tiene esta capacidad incorporada, puede acceder al subdominio desde request.subdomain
.
También puede enrutar basado en el subdominio:
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
Si está utilizando 2.3, tendrá que usar un plugin como subdomain-fu.
¿Hay alguna manera de hacerlo al usar Rack Middleware? request.subdomain no está disponible solo request.host – cman77
@ cman77 Puede intentar algo como [esto] (http://tannerburson.com/2009/01/extracting-subdomains-in-sinatra.html/), o [rack- subdominio] (https://github.com/mattt/rack-subdomain) para situaciones más complejas. –
¿Esto funciona en desarrollo? – Noz
account_location es también un buen complemento. Después de usarlo, puede encontrar la cuenta basada en diferentes subdominios. Y puede averiguar el subdominio desde url simplemente escribiendo
request.subdomains(0).first
en su código.
Puede usar el SubdomainFu plugin. Este complemento le proporciona un método current_subdomain que devuelve el dominio_actual de su aplicación.
También puede echar un vistazo a this Railscast
ACTUALIZACIÓN
También puede utilizar request.subdomains
esto le dará una serie de subdominios.
simple en su controlador simplemente haga lo siguiente
unless request.subdomains.any?
#No domains available redirect
redirect_to subdomain: 'www'
end
Para cualquiera que quiera obtener los subdominios en el servidor local utilizando WEBrick:
Ponga config.action_dispatch.tld_length = 0
en config/environments/development.rb
y todo debería funcionar.
Enlace para enviar SO aquí: Can I make Rails/WEBrick recognize entries in /etc/hosts as subdomains (instead of domains)?
Enlace a Github mensaje: https://github.com/rails/rails/issues/12438
En caso de que usted está trabajando con una cadena, y asumiendo que puede ser una verdadera URI, puede hacerlo a extraer el subdominio
require 'uri'
uri = URI.parse('http://test123.example.com')
uri.host.split('.').first
=> "test123"
Dio un -1 ya que Rails tiene una función incorporada que ya lo hace, por lo que reinventaría la rueda y podría ser más propenso a errores. – corvuszero
+1 porque realmente necesitaba analizar una cadena. Estaba intentando analizar 'request.referrer'. No escuches a @corvuszero. La pregunta no fue específica. ¡Gracias! –
Usar el siguiente método dentro de su controlador
request.subdomains
Esto devuelve un conjunto de subdominios
'request.subdomain' no devuelve una matriz. 'request.subdomains' hace. Tenga en cuenta la forma plural de subdominio. –
Buen ojo, actualicé la respuesta. –
Un poco tarde a la fiesta, pero esto es lo que he usado en versiones anteriores de rieles.
subdomain = rquest.subdomains.join('.')
Debe ser compatible con versiones anteriores en las últimas versiones
le importa usar una expresión regular? –
Creo que esto sería mejor respondido al proporcionar una solución para encontrar el subdominio de una cadena, así como la url actual. Teniendo en cuenta que este es el resultado n. ° 1 en google para la búsqueda "los rieles obtienen el subdominio de una url" – Joshua