2010-11-18 11 views
0

Ich richte eine SAAS-Lösung, wo jeder Account seine eigene Subdomain hat, z. sub1.mydomain.com sub2.mydomain.com und in der Anwendungsvorlage habe ich eine Standard-Vorlage mit 2 Spalten eingerichtet, in der ich eine benutzerdefinierte partielle für jede Site sowie eine benutzerdefinierte style.css-Datei für die Spalte neben einbeziehen möchte jede Subdomain. Ich frage mich also, wie ich das einrichten könnte, um diese benutzerdefinierten Informationen anzuzeigen. Ich möchte einen Style-Controller einrichten - so dass nur die Elemente der linken Seitenleiste angezeigt werden und die style.css-Seite für jeden Domänennamen, mit dem sie verknüpft ist, hat jemand gute Ideen?mit benutzerdefinierten Vorlagen rails3

Grundsätzlich für einen statischen Seiten-Controller habe ich das Setup bereits, sowie eine andere DB-Aktion Aber alle Tipps wären willkommen.

Antwort

1

am Projekt Werfen Sie einen Blick arbeite ich an: https://github.com/fabiob/guildhost-hosting

Der Code, den Sie in app/controllers/application_controller.rb benötigen:

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 

Auch in 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> 

Es gibt eine /public/themes Ordner, in dem sich die Anpassung für jede Subdomain befindet. Jede Subdomain hat die Möglichkeit, ein einzelnes CSS, main.css, anzupassen. Wenn mehr als eine CSS-Datei benötigt wird, sollten @import -Klauseln unter main.css verwendet werden.

+0

Danke, da wir jetzt das vor Filter-Tag haben, kann ich irgendwie aus jeder Aktion herausziehen, um eine globale ID zu finden? @accountid = Account.find_by_subdomäne! (request_subdomain) .id – tspore