8
votes

Rails: sous-domaines de routage vers une ressource

est-il possible de mapper un sous-domaine à une ressource? J'ai un modèle d'entreprise. Actuellement, à l'aide de sous-domaine_fu, mon fichier de routage contient: xxx

mon modèle de société contient une colonne "sous-domaine".

tandis que cela fonctionne comme prévu, c'est une route nommée et ISN 't reposant. Essentiellement, j'ai besoin de cartographier "Nom.domain.com" à l'action du spectacle pour le contrôleur de sociétés. Est une route nommée la voie à suivre ou puis-je utiliser une route de ressources?


0 commentaires

4 Réponses :


4
votes

Je ne connais pas un moyen de le faire avec carte.Resources code>. Il accepte une option : conditions code> mais je ne sais pas comment supprimer la partie / sociétés / code> de l'URL. Cependant, map.resources code> est principalement un moyen pratique de générer un tas d'itinéraires nommés, que vous pouvez faire manuellement. Quelque chose comme ça.

map.company '', :controller => 'companies', :action => 'show', :conditions => { :subdomain => /.+/, :method => :get }
map.new_company 'new', :controller => 'companies', :action => 'new', :conditions => { :subdomain => /.+/, :method => :get }
map.edit_company 'edit', :controller => 'companies', :action => 'edit', :conditions => { :subdomain => /.+/, :method => :get }
map.connect '', :controller => 'companies', :action => 'create', :conditions => { :subdomain => /.+/, :method => :post }
map.connect '', :controller => 'companies', :action => 'update', :conditions => { :subdomain => /.+/, :method => :put }
map.connect '', :controller => 'companies', :action => 'destroy', :conditions => { :subdomain => /.+/, :method => :delete }


1 commentaires

Merci ryan! Ce que j'ai fait est la ressource des entreprises sous un espace de noms. Cela permet d'accéder aux actions nouvelles, modifier, créer, mettre à jour et détruire des actions sans sous-domaine: c'est-à-dire domain.com/namespace/companies/action puis, en dehors de l'espace de noms, j'utilise cette route nommée Named (lorsqu'un sous-domaine est présent). Tout semble être bien cartographier.



8
votes

On peut transmettre des conditions à une route de ressources ainsi qu'un itinéraire nommé. Dans une application, je suis impliqué dans tout ce que tout est scopé à un compte. A: avant_filter charge le compte en utilisant le sous-domaine. Ainsi, pour les ressources carottes sur un compte, nous voulons mettre en place les itinéraires aux URL avec des sous-domaines. La manière sèche de le faire est d'utiliser une carte avec des options: xxx pré>

Comme vous pouvez le voir, un itinéraire nommé acceptera également un hachage avec un sous-domaine. Vous pouvez également adopter l'approche RYAN illustrée ci-dessus ou vous pouvez spécifier des conditions sur une base de ressources: P>

  map.resources :users, :conditions => {:subdomain => /.+/}


0 commentaires

2
votes

Voici un exemple complet implémentation de Rails 3 sous-domaines avec authentification (avec un tutoriel détaillé). Il est beaucoup plus facile de le faire dans des rails 3 que dans les rails 2 (pas de plugin requis).


1 commentaires

Merci pour le conseil. Lien profonde vers les routes.rb Exemple est: Github. Com / Fortudias / Rails3-Sous-Sous-Sous-Devise / Blob / Master / Conf IG / ...



2
votes

Utilisation de la ressource liée à la réponse de Daniel, dans Rails 3 Strort> Le moyen d'aligner '/' à un contrôleur différent selon le sous-domaine est la suivante:

match '/' => 'somecontroller#action', :constraints => { :subdomain => 'yoursubdomain' }


0 commentaires