Plusieurs render :partial dans une vue

Bonjour,

Je suis tout nouveau en Rails, ou tout du moins en ce qui concerne la
création from scratch d’une appli Rails.

J’utilise un contrôleur Headquarter pour peupler une vue synthétique de
plusieurs modèle de mon application. Dans cette vue, j’utilise des
partial
pour alléger un peu la lecture des templates, ce qui fait que j’ai ce
morceau d’erb dans ma vue:

<%= render :partial => "day_overview" %>

Ce partial présente un tableau relativement conséquent à partir d’un
tuple
d’un modèle qui peut ne pas exister (échec du finder). Dans ce cas, je
remplace ce partial par un autre; présentant ses excuses à l’utilisateur
et
lui indiquant le lien lui permettant de créer le tuple manquant.
Dans le contrôleur, ce cas est géré ainsi:

if request.xml_http_request?
if !@core_day.nil?
render :partial => “day_overview”, :layout => false
else
render :partial => “unknow_core_day”, :layout => false
end
end

Pour l’instant, ça fonctionne comme je le souhaite.

Mon itération suivante consiste à indiquer sous ce tableau un autre
tableau,
exposant des détails menant au tableau. La logique veut que j’utilise le
même système que précedemment. Et là , c’est le drame. Comment puis-je
effectuer le rendu de deux partials différents dans une même page?
Quelque
chose me dit que ce n’est pas possible, et même que les partials ne sont
pas
fait pour cela.

Mes deux questions sans réponses:

  1. Visiblement, il n’y a pas de correspondance entre ce qui est pointé
    dans
    la vue par :partial et le render :partial du controller. A quoi sert
    cette
    variable dans la vue?
  2. Comment procéderiez-vous pour conserver un template clair et lisible,
    lorsque plusieurs parties peuvent-être rechargée indépendamment?
  3. Question bonus: C’est une feinte, il n’y a que deux questions
  4. la question 4

Merci d’avoir lu jusqu’au bout, et de votre aide.

Tom.

Je débute aussi avec Rails mais je ne suis pas sur de comprendre ta
phrase
“Mon itération suivante consiste à indiquer sous ce tableau un autre
tableau, exposant des détails menant au tableau.”
et donc je ne sais pas répondre à la question 1
Pour la question 2 chaque partie de ta page rechargée indépendemment
doit être dans un fichier .rhml qui commence par “_” (rails a le
défaut de produire beaucoup de fichier)

J’espère que ça t’aide
Nicolas

Le 28/01/08, Tranquiliste [email protected] a écrit :

Je débute aussi avec Rails mais je ne suis pas sur de comprendre ta
phrase
“Mon itération suivante consiste à indiquer sous ce tableau un autre
tableau, exposant des détails menant au tableau.”
et donc je ne sais pas répondre à la question 1

En effet, je suis peu clair. Mieux vaut se relire deux fois qu’une seule
:-/
Je reformule:
“Le premier tableau présente l’état général d’un système pour un jour J.
Il
fonctionne bien à ce jour (avec une mise à jour Ajax lorsque
l’utilisateur
saisie une date différente dans un champ prévu à cet effet). Maintenant,
je
souhaite ajouter un autre tableau sous celui de l’état général du
système,
présentant l’état des sous-systèmes impliqué dans le premier tableau”
Est-ce
plus clair?

Ou une reformulation encore plus simple: Puis-je utiliser sur une même
page
n rendder partial dans ma vue?

Pour la question 2 chaque partie de ta page rechargée indépendemment

doit être dans un fichier .rhml qui commence par “_” (rails a le
défaut de produire beaucoup de fichier)

Dans rails2, l’extension devient .html.erb, toujours avec l’underscore
en
tête, ce que j’utilise (et qui fonctionne parfaitement bien).

J’espère que ça t’aide

Ne serait-ce qu’en parler aide, donc merci :slight_smile:

Effectivement je ne suis pas encore passé à la version 2.0

Si ta question est : est ce que je peux avoir un render partial à
l’intérieur de d’un .html.erb alors la réponse est oui.

Tu devrais lire le bouquin Agile development… publié en Français
chez Eyrolles cela permet de dégrossir un peu.

Je te conseille de lire ce thread :

http://www.techlists.org/archives/programming/railslist/2006-02/msg00336.shtml

bonne
journée

Merci à tous deux pour votre aide.

Je suis au plaisir de vous annoncer que la grève de mes neurones a
cessé:

  1. Je confondais allégrement les appels de render :partial => X dans mes
    vues avec les appels à la même fonction dans mes controllers, pour les
    réponses Ajax.
  2. Puisque j’ai besoin d’une partie de la logique métier à chaque mise Ã
    jour de ces vues partielles, je n’utiliserais pas render :partial mais
    render_component, qui me permet d’appeler une action d’un controller
  3. Je suis heureux de me souvenir que j’ai un exemplaire d’Agile
    Programming
    with Rails dans ma bibliothèque.

Merci à tous :slight_smile:

Tom

Le 29/01/08, dicouw [email protected] a écrit :