Question

Il me manque quelque chose concernant la visibilité des variables.Dans mon config.rb, j'utilise une structure de données pour générer des pages dynamiques :

    @pages = [
    {
      id: "cookies",
      title: "Happy Chocolate Chip Cookies", 
      quote: "These cute cookies are full of sweet chocolate and ready to give you energy!",
      content: "Orecchini a monachella. Realizzati in fimo, dipinti a mano e rivestiti con vernice lucida."
    },
    ....]



 @pages.each do |p|
    page "/creations/#{p[:id]}.html", :proxy => "item-template.html", :ignore => true do 
      @tile = p
    end
  end

La génération des pages se passe bien, aucun problème avec ça.Mais..

Comment puis-je également accéder à cette structure de données afin de fournir des liens dynamiques vers les pages générées ?J'aimerais pouvoir créer une page d'index (appelons-la créations.html) avec le code suivant :

    <ul>
    <% @pages.each do |tile| %>
        <li><a href="creations/<%= tile[:id]%>.html">
            <%= tile[:title] %>
        </a></li>
    <% end %>
</ul>
Était-ce utile?

La solution

Nul besoin de créer une aide personnalisée, vous pouvez utiliser un fichier de données YAML pour remplir votre modèle et générer la liste des liens. Laissez-moi vous expliquer.

au même niveau que les répertoires de source et de construction Assurez-vous de créer un répertoire de données. IE:

  • Construire
  • source
  • DATA

    à l'intérieur de cette création d'un fichier appelé "pages.yml" (par exemple).

    Ce fichier doit être spécifiquement formaté, alors soyez prudent (ou utilisez un YAML Parser Assurez-vous de ne pas avoir d'erreurs - comme une virgule manquante ou une citation échappée).

    Utilisation des données de votre fichier config.rb, un exemple serait quelque chose comme:

    - id: "cookies"
      title: "Happy Chocolate Chip Cookies"
      quote: "These cute cookies are full of sweet chocolate and ready to give you energy!"
      content: "Orecchini a monachella. Realizzati in fimo, dipinti a mano e rivestiti con vernice lucida."
    
     - id: "bacon"
       title: "Smoked bacon bits"
       quote: "everything tastes better with bacon!"
       content: "blah"
    

    etc ...

    Maintenant, dans votre fichier config.rb Remplacez @ pages.each do | p | avec data.pages.ache do | p |

    data.Pages.achez des boucles à travers chaque élément du fichier YAML nouvellement créé

    Vous pouvez ensuite simplement faire référence au même fichier dans votre fichier d'index (créations.html) comme:

    <ul>
      <% data.pages.each do |tile| %>
        <li><a href="creations/<%= tile[:id]%>.html">
           <%= tile[:title] %>
        </a></li>
      <% end %>
    </ul>
    

    J'ai eu un problème similaire autour des pages dynamiques que vous pouvez faire référence à ici

    J'espère que cela vous aidera. Bonne chance!

Autres conseils

Peut-être ajouter une aide qui renvoie le @pages structure des données dans votre fichier creations.erb.C'est à dire.dans ton config.rb fichier ajouter :

helpers do
  def dynamic_pages()
    @pages
  end
end

et puis dans ton creations.erb avoir:

<ul>
  <% dynamic_pages.each do |tile| %>
    <li><a href="creations/<%= tile[:id]%>.html">
       <%= tile[:title] %>
    </a></li>
  <% end %>
</ul>

Et, si vous souhaitez référencer des pages dynamiques dans vos pages dynamiques (!), un assistant pourrait générer ce code HTML et vous pourriez appeler le...nan, peu importe !

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top