2010-11-18 25 views
0

Je suis en train de mettre en place une solution SAAS où chaque compte a son propre sous-domaine, par ex. sub1.mydomain.com sub2.mydomain.com et dans le modèle d'application J'ai installé un modèle standard de 2 colonnes dans lequel je veux inclure sur la colonne de côté une partie personnalisée pour chaque site, ainsi qu'un fichier custom.css pour chaque sous-domaine. Donc je me demande comment je pourrais configurer ceci pour montrer cette information personnalisée. Je voudrais configurer un contrôleur de style - donc il ne montre que les éléments de la barre latérale gauche, et la page style.css pour chaque nom de domaine auquel il est associé. Est-ce que quelqu'un a de bonnes idées?en utilisant des modèles personnalisés rails3

Fondamentalement pour un contrôleur de pages statiques j'ai déjà cette configuration, ainsi qu'une autre action de DB Mais tous les conseils seraient appréciés.

Répondre

1

Jetez un coup d'oeil au projet, je travaille sur: https://github.com/fabiob/guildhost-hosting

Le code dont vous avez besoin est dans app/controllers/application_controller.rb:

class ApplicationController < ActionController::Base 
    protect_from_forgery 

    before_filter :load_subdomain 

    def load_subdomain 
    @subdomain = self.request.subdomains[0] || 'local' 
    load_customer 

    raise "Invalid Subdomain: #{self.request.subdomains}" unless @subdomain.present? 
    end 

    def load_customer 
    @customer = Customer.find(@subdomain) 
    end 
end 

également dans app/views/layouts/application.html.erb:

<!DOCTYPE html> 
<html> 
<head> 
    <title><%= @customer.name %> @ MySaaS.com.br</title> 
    <%= stylesheet_link_tag :all %> 
    <%= stylesheet_link_tag "/themes/#{@subdomain}/main.css" %> 
    <%= javascript_include_tag :defaults %> 
    <%= csrf_meta_tag %> 
</head> 
<body> 
    ... 
</body> 
</html> 

Il y a un /public/themes dossier dans lequel réside la personnalisation pour chaque sous-domaine. Chaque sous-domaine a la possibilité de personnaliser un seul CSS, main.css. Si plus d'un fichier CSS est nécessaire, les clauses @import doivent être utilisées sur main.css.

+0

Merci, puisque nous avons maintenant la balise de filtre avant, puis-je sortir de chaque action pour trouver un identifiant global? @accountid = Account.find_by_subdomain! (request.subdomain) .id – tspore