Domanda

Mi manca qualcosa sulla visibilità delle variabili. Nella mia config.rb sto usando una struttura dati per generare pagine dinamiche:

    @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 generazione delle pagine va bene, nessun problema con questo. Ma..

Come posso accedere a questa struttura di dati anche al fine di fornire collegamenti dinamici alle pagine generate? Vorrei poter creare una pagina dell'indice (chiamiamo It Creations.html) con il seguente codice:

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

Soluzione

Non è necessario creare un aiutante personalizzato, è possibile utilizzare un file di dati YAML per popolare il modello e generare l'elenco dei collegamenti. Lasciatemi spiegare.

Allo stesso livello delle directory di origine e build assicurati di creare una directory di dati. cioè:

  • costruire
  • fonte
  • dati

All'interno di questo crea un file chiamato "Pages.yml" (ad esempio).

Questo file deve essere formattato specificamente, quindi fai attenzione (o usa un parser Yaml Per assicurarti di non avere errori, come una virgola mancante o un preventivo sfuggito).

Utilizzando i dati nel file config.rb, un esempio sarebbe qualcosa di simile:

- 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"

eccetera...

Ora, nel tuo file config.rb sostituire @pagine.each do | p | insieme a data.pages.each do | p |

Data.Pages.Ey Loops tramite ogni elemento nel file YAML di recente creazione

Puoi quindi semplicemente fare riferimento allo stesso file nel tuo file indice (creations.html) come: così:

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

Ho avuto un problema simile sulle pagine dinamiche a cui puoi fare riferimento qui

Spero che sia di aiuto. Buona fortuna!

Altri suggerimenti

Forse aggiungi un aiutante che restituisce il @pages Struttura dei dati nel tuo file creations.erb. Cioè nel tuo config.rb File Aggiungi:

helpers do
  def dynamic_pages()
    @pages
  end
end

e poi nel tuo creations.erb avere:

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

E, se vuoi fare riferimento a pagine dinamiche nelle tue pagine dinamiche (!), Un aiutante potrebbe generare quell'HTML e potresti chiamare il ... nah, non importa!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top