Visibilité des variables intermédiaires dans config.rb et les pages
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>
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 !