Comment changer le chemin par défaut des fichiers de vue dans un de Rails 3, le contrôleur?
J'ai un contrôleur appelé ProjectsController
. Ses actions, par défaut, regardez pour les vues à l'intérieur de app/views/projects
. J'aimerais modifier ce chemin d'accès pour toutes les méthodes (index
, show
, new
, edit
etc...) dans le contrôleur.
Par exemple:
class ProjectsController < ApplicationController
#I'd like to be able to do something like this
views_path 'views/mycustomfolder'
def index
#some code
end
def show
#some code
end
def new
#some code
end
def edit
#some code
end
end
Veuillez noter que je ne suis pas à l'évolution de chaque méthode avec render
mais la définition d'un chemin d'accès par défaut pour tous. Est-ce possible? Si oui, comment?
Merci!
Vous devez vous connecter pour publier un commentaire.
Si il n'y a pas de méthode intégrée pour cela, peut-être vous pouvez remplacer
render
pour que le contrôleur?Pas sûr que cela fonctionne dans la pratique, ou si il fonctionne à tous.
action
variable n'existe pas. Cependant, ce n'était pas pertinente pour les besoins (j'ai juste besoin d'ajouter un dossier dans le chemin d'accès). merci beaucoup!Voir ActionView::ViewPaths::ClassMethods#prepend_view_path.
Vous pouvez le faire à l'intérieur de votre contrôleur:
use_route
, qui est maintenant obsolète dans les Rails 4.Vous pouvez ajouter quelque chose comme:
dans le fichier config/application.rb fichier rails de regarder dans un autre répertoire pour afficher les modèles. Le seul inconvénient est que ça va encore regarder pour afficher les fichiers qui correspondent le contrôleur. Donc, si vous avez un contrôleur nommé contrôleur HomeController avec la config ci-dessus pour les vues, il va chercher quelque chose nommé "app/views/myspecialdir/home/index.html.erb" à rendre.
path.app.views.unshift("views/myspecialdir")
serait de travailler. I. e. ajoutez votre propre entrée spéciale pour le début du tableau au lieu d'ajouter à la fin. Rails probablement regarde les matchs depuis le début de la matrice.paths['app/views'] << "app/views/myspecialdir"
Si vous souhaitez modifier le chemin d'accès par défaut pour tous vos points de vue au niveau de l'application, vous pourriez faire quelque chose comme la suite d' -
Et écrire tous vos points de vue dans le dossier
new_views
suivant la même structure de répertoire d'origine.