2010-03-23 4 views
3

J'ai une application RoR et le modèle SomeModel. J'ai des vues pour ce modèle et je veux savoir - y a-t-il une méthode pour obtenir le chemin de la vue? Bien sûr, je peux utiliser pour cette instance de modèleNom de la classe pour voir le chemin

m = SomeModel.new 
v = m.class.class_name.pluralize.downcase 

Il travaille, mais peut-être que vous connaissez une meilleure façon? :)

+0

Cela fait plus d'un mois que l'affiche ne répond pas, il n'y a probablement plus de réponses à cette question. –

Répondre

0

Vues fonctionnant avec des modèles à travers la couche contrôleurs. Chaque vue correspond à une action de rout/controller. Donc, chemin de vues en rapport avec le nom du contrôleur: app/views/some_controller/{groupe de fichiers} .html.erb

Il est pas toujours vrai, que votre point de vue dirname sera appelé nom de votre modèle. Donc, il n'y a pas de méthode universelle pour trouver des vues dirname.

Votre solution est appropriée mais pas dans tous les cas

1

Comme @ fl00r dit, non, il n'y a pas de méthode générale pour le faire, comme les noms de tous les points de vue dépendent des implémentations d'applications individuelles (pas chaque contrôleur est un contrôleur de ressources), mais vous pouvez certainement écrire quelques aides afin que vous n'ayez pas à taper m.class.class_name.pluralize.downcase fréquemment.

module ViewPathHelper 
    def resource_view_path(model_obj, action) 
    "#{model_object.class.class_name.pluralize.downcase}/#{action}" 
    end 
end 

serait une façon de le faire.

Cela semble une demande quelque peu étrange - qu'est-ce que vous avez besoin du chemin d'accès de toute façon? Faites-vous quelque chose de très polymorphe? (Parce qu'il y a cette chose appelée polymorphic_path ...)

0

Si vous pensez que vous avez besoin du chemin vers une vue dans votre modèle, il y a de fortes chances que vous insériez une logique dans votre modèle qui appartient au contrôleur ou à l'assistant. Vous pourriez reconsidérer la façon dont vous partitionnez votre logique MVC.

0

to_partial_path fait ce que vous demandez. Ceci est très pratique, en particulier lorsque vous travaillez avec ajax, et/ou des relations imbriquées et polymorphes.

+0

alors que cela peut répondre à la question, il est préférable d'inclure les parties importantes de la solution (vous avez fourni via le lien) afin de tirer le meilleur parti de votre réponse. link-only-answers (c'est ce que vous avez actuellement) ont deux inconvénients: ils ne peuvent pas être trouvés très bien grâce à un moteur de recherche et ils ne sont pas valides dès que le lien est rompu. S'il vous plaît pensez aubout édition vous répondez :) merci – cramopy