Forum: Rails France débutant rails: inclusion de page avec variables

4a9ba2c4cf46659c5c88e33db2035edb?d=identicon&s=25 zaralger algernon (zaralger)
on 2012-11-24 16:42
Bonjour !
Alors voila, je me lance dans le ruby on rails et je dois dire que je
suis un peu surpris parce qu'une action qui se fait de manière super
simple en php avec un

   <?php include("page.php"); ?>

devient très vite un casse tête en ror... j'ai essayer de me plonger
dans la page http://guides.rubyonrails.org, mais ca m'embrouille plus
qu'autre chose et je n'arrive à rien.

Du coup peut être que quelqu'un saura m'expliquer la démarche à
appliquer pour résoudre mon problème:
Je fais un site de citations, du coup j'ai un template HTML pour
afficher chaque citation dans un bloc tout beau tout propre, et l'idée
serait que sur ma page principale j'ai quelquechose dans ce goût là:

   <section>
      <% @citation = Citation.all %>
      <%= render "showAsList" @citation %>
   </section>

avec mon template dans mon fichier showAsList.html.erb:

   <div><p><%= citation.text %></p></div>

et que je puisse renouveller sur une nouvelle page, par exemple si je
veux varier le nombre de citations à afficher, ou afficher des citations
randoms ou seulement celles qui répondent à une certaine condition
etc...

   <section>
      <% @citation = Citation.limit(10) %>
      <%= render "showAsList" @citation %>
   </section>

Vu que j'ai encore un peu de mal, est ce que vous pouvez vraiment
répondre de manière détaillée, j'imagine que je vais devoir bidouiller
mon controller, et d'autres fichiers, donc j'aimerais comprendre ou est
ce que je dois placer tel ou tel code etc...

Merci d'avance !!! :D
9bc1f80f0ada847e6a306a36f1e62d0a?d=identicon&s=25 Julien Grillot (rubybb)
on 2012-12-13 13:56
Salut :) Avec du retard :

Dans ton controller:

    @citations = Citation.all

Par convention, met au pluriel tes variables quand elles contiennent
plusieurs éléments. Tu vas avoir deux vues :

    index.html.erb
    <section>
      <% @citations.each do |citation| %>
        <%= render 'show', citation: citation %>
      <% end %>
    </section>

    _show.html.erb
    <div><p><%= citation.text %></p></div>

Le « _ » en début de nom indique à Rails qu'il s'agit d'un « partial »,
c'est à dire une vue qu in'a pas d'autres objectifs que d'être rendue
dans d'autres vues. J'ai utilisé la syntaxe ruby 1.9, si tu est en 1.8,
remplace « citation: citation » par « :citation => citation ».

Pour la pagination, je te conseille de jeter un œuil sur kaminari
(https://github.com/amatsuda/kaminari).

Bon courage !
This topic is locked and can not be replied to.