2009-12-01 9 views
0

par défaut, lorsque je demande contrôleur rails pour faire des messages/index, il nerails - comment passer outre les vues par défaut

def index 
respond_to{|fmt| fmt.html} 
end 

et montre app/vues/messages/index.html.erb

il y a un client qui veut que son instance de la plate-forme affiche vues différemment (et les changements ne peuvent pas être faits avec css seulement).

solution que je pense serait

  1. créer répertoire app/views/# {CustomerName}, qui aurait même structure que app/vues, mais n'aurait des vues qui doivent remplacer celles par défaut.

  2. définir une liste contenant constante tableau de vues qui doivent être outrepassée (sinon, ils doivent charger les vues par défaut)

    CUSTOM_VIEWS["messages"]=["index","show","edit"] 
    

    quelque part dans le fichier de configuration spécifique au client

  3. dans toutes les actions du contrôleur font quelque chose comme

    def index 
    respond_to do |fmt| 
        fmt.html do 
        if CUSTOM_VIEWS[params[:controller]].include?(params[:action]) 
        #override default app/views/messages/index.html.erb with app/views/customername/messages/index.html.erb 
        render "#{customername}/#{params[:controller]}/#{params[:action]}" 
        end 
        end 
    end 
    end 
    

ou y at-il une solution/un plugin meilleur/plus rapide pour faire cela?

Répondre

1

je crois "view_paths" ainsi que "prepend_view_path" peut être une réponse à ma question

par exemple

http://www.axehomeyg.com/2009/06/10/view-path-manipulation-for-rails-with-aop/

màj:

résolu avec simple ajouter à application_controllerOù APP_CONFIG ['nom_prénom'] est un nom de produit spécifique.

essentiellement ce qu'il fait est chargement vue personnalisée app/custom_views/CustomerName/si elle existe pour l'action du contrôleur spécifique, sinon il charge l'affichage par défaut de app/views/

+0

Cela persistera malheureusement dans les demandes. – aceofspades

Questions connexes