2010-03-15 7 views
1

Je reçois une erreur de modèle manquant après avoir essayé de rendre un partiel à partir d'un plugin. J'ai inclus les fichiers avec les éléments suivants:Rails: rendre un partiel à partir d'un plugin

%w{ models controllers helpers views }.each do |dir| 
    path = File.join(File.dirname(__FILE__), 'app', dir) 
    $LOAD_PATH << path 
    ActiveSupport::Dependencies.load_paths << path 
    ActiveSupport::Dependencies.load_once_paths.delete(path) 
    end 

Les modèles sont chargés de se, mais comme pour d'autres choses que je ne sais pas ce qui se passe. Les helpers ne sont pas chargés aussi parce que je viens de copier le contenu du partial à partir du plugin au lieu du render: partial => et ensuite il est venu avec une erreur d'aide.

Question est de savoir comment pouvoir: rendre: partiel => des vues dossier dans mon plugin

+0

Vous pouvez jeter un oeil en utilisant config.load_paths dans votre environnement.rb pour charger des répertoires supplémentaires au démarrage. – Chris

+0

bonne idée, mais je suis à la recherche d'une solution hors de la boîte pour les développeurs – s84

Répondre

1

Pour les vues plugin habituellement les copier dans votre répertoire app/views ou les copies d'installation de plug-in pour vous. Les vues ne fonctionnent pas sur les $LOAD_PATH de la même manière que les modèles et les contrôleurs.

+0

Ok. Je suppose que cette solution est correcte car le développeur n'a rien d'autre qu'un rake qui pourrait le faire entrer dans l'application et non dans l'application du plugin, mais je préférerais qu'il fonctionne dans l'application plugins. – s84

+0

Le guide des rails pour la construction d'un plugin montre que les modèles, les contrôleurs et les helpers peuvent tous être accédés, mais cela n'explique pas les vues. – s84

+0

Je suis tombé sur un autre tut qui dit que les vues seront chargées, mais il n'y avait pas d'exemples. – s84

0

Dans Rails 2.3. * Vos fournisseurs/plugins/XXXX/app/views/directories sont automatiquement inclus dans les chemins de chargement. Alors, quand étant donné la structure du plugin suivante:

fournisseur/plugins/your_plugin/app/vues/shared/_box.html.erb

Yuppie! 

Vous pouvez appeler cette partie, par exemple, comme app/views/site/index.html.rb Ceci:

<%= render 'shared/box' %> 
Questions connexes