dans mon application, j'ai un modèle "Utilisateur". Chaque utilisateur peut avoir plusieurs (adresses e-mail) qui sont définis dans le modèle « Adresse »:Un contrôleur, différentes vues pour les utilisateurs normaux et les administrateurs
Class User < ActiveRecord::Base
has_many :addresses
def is_authorized(op)
# returns true or false
end
def is_owned_by(user)
# returns true or false
end
end
Class Address < ActiveRecord::Base
belongs_to :user
end
intérieur de la classe AddressController, l'utilisateur actuellement connecté est disponible dans la variable d'instance « @user ». Le contrôleur empêche les utilisateurs ordinaires d'éditer, de supprimer, d'afficher etc. les adresses qui ne leur appartiennent pas - mais il permet à un utilisateur administratif de les modifier. La classe AddressController peut demander à AddressModel si l'utilisateur actuellement connecté effectue des opérations normales ou super-utilisateur.
Tout cela fonctionne bien et les mises à jour de base de données sont faites comme prévu, cependant, j'aimerais vraiment avoir des vues HTML différentes selon le mode de fonctionnement. Je ne peux penser à deux façons d'y parvenir:
- Faire le mode de fonctionnement (normal/privilégié) connus dans la classe AddressController (en utilisant une variable d'instance, par exemple @privileged) et d'utiliser un « si » déclaration la vue.
- Utilisez quelque chose comme un "after_filter" dans le contrôleur d'adresse pour rendre une mise en page différente.
S'il est possible d'afficher les résultats de l'exécution d'un seul contrôleur dans deux dispositions complètement différentes, en fonction de son mode de fonctionnement, quel est le meilleur moyen d'y parvenir?
Merci à l'avance Stefan
Merci. Mais il semble que si je fais cela, je quitterais le chemin de "convention sur configuration". Je suis un peu inquiet - c'est ma première application Rails - devrais-je déjà diverger de ce que tout le monde semble faire? – cite
Eh bien, sans doute la convention est de rendre une vue pour une action, mais je peux voir ce que vous obtenez. Si vous recherchez simplement différentes configurations, la solution de Staelen est une bonne solution. Si vous voulez vraiment afficher des vues différentes en fonction de la logique de l'action, je ne suis pas sûr que cela soit assez proche de la convention de base pour ne pas spécifier quelle vue vous voulez rendre. – Shadwell
Je pense que je vais essayer la solution de Staelen pour la mise en page et celle pour le gabarit à rendre. Merci encore. – cite