56 votes

Où placer les partiels partagés par l'ensemble de l'application dans Rails?

Où irais-je pour placer des fichiers partiels partagés par plusieurs modèles? J'ai une page appelée crop.html.erb utilisée pour un modèle - Photo . Maintenant, j'aimerais aussi l'utiliser pour un autre modèle appelé User .

Je pouvais copier et coller le code, mais ce n'était pas très sec, alors je me suis dit que je le déplacerais en partiel.

Puisqu'il est partagé entre deux modèles, où placerais-je ce partiel ?

Merci!

60voto

John Topley Points 58789

La convention Rails est de mettre les partiels partagés en /app/views/shared .

53voto

ecoologic Points 2748

Mise à jour

Mise en page de l'héritage est maintenant dans les guides, en vertu de la présentation et le rendu L'héritage de Template fonctionne de la même façon.

Rails 3.1 et versions suivantes de mettre en œuvre l'héritage de template, donc je pense que la bonne place pour le partage des partiels est désormais /app/views/application/, dites que vous êtes en products#index vous pouvez effectuer les opérations suivantes:

-# products#index
= render @products.presence || 'empty'

-# /app/views/application/_empty.html.haml
There are no items

btw c'est application parce que la connexion est le contrôleur de l'héritage, de sorte que cela suppose ProductsController < ApplicationController

De cette façon, si vous implémentez /app/views/products/_empty.html.haml qui seront prises, le ci-dessus est une solution de repli pour tous les disparus de partiels, et je ne peux pas vérifier pour l'instant, mais je pense que même pour le modèle lui-même...

Railscast: l'héritage de template!

5voto

Henrik Sjökvist Points 121

Les Rails de Vue utilisations app/views/layouts de partagé partiels comme en-tête et pied de page, mais le Ruby on Rails Guide utilise app/views/shared en un exemple. Je suppose que cela se résume à la préférence personnelle. Je voudrais utiliser layouts de haut niveau pour des choses comme l'un des principaux nav ou un pied de page, mais shared pour les plus étroites contrôleur de niveau stuff comme un formulaire.

3voto

Toby Hede Points 22128

J'ai généralement un dossier partagé dans mes vues qui contient des partiels couramment utilisés.

0voto

Jimmy Cuadra Points 13499

Peu importe où vous les mettez. Vous pouvez rendre n'importe quel partiel à n'importe quel emplacement arbitraire en fournissant le chemin du fichier à render - il n'a pas besoin d'être associé au contrôleur qui le restitue. J'utilise un répertoire simplement appelé partials sous le répertoire view , et j'appelle les partiels comme ceci:

 render :partial => 'partials/mypartial'
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X