Видимость переменных посредника в config.rb и страницах - PullRequest
2 голосов
/ 26 февраля 2012

Я что-то упускаю из-за видимости переменных.В моем config.rb я использую структуру данных для генерации динамических страниц:

    @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

Генерация страниц идет хорошо, с этим проблем нет.Но ..

Как я могу получить доступ к этой структуре данных, чтобы обеспечить динамические ссылки на сгенерированные страницы?Я хотел бы иметь возможность создать индексную страницу (назовем ее creations.html) со следующим кодом:

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

Ответы [ 2 ]

2 голосов
/ 14 июля 2013

Нет необходимости создавать пользовательский помощник, вы можете использовать файл данных yaml, чтобы заполнить ваш шаблон и сгенерировать список ссылок.Позвольте мне объяснить.

На том же уровне, что и каталоги исходного кода и сборки, убедитесь, что вы создали каталог данных.то есть:

  • build
  • source
  • data

Внутри этого создайте файл с именем "pages.yml" (например).

Этот файл должен быть специально отформатирован, поэтому будьте осторожны (или используйте синтаксический анализатор yaml , чтобы убедиться, что у вас нет ошибок - например, пропущенная запятая или экранированная кавычка).

Используя данные в вашем файле config.rb, пример может выглядеть примерно так:

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

и т.д ...

Теперь в вашем файле config.rb замените@pages.each do | p | с data.pages.each do | p |

data.pages.each перебирает каждый элемент во вновь созданном yamlfile

Затем вы можете просто ссылаться на тот же файл в индексном файле (creations.html), например, так:

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

У меня была похожая проблема с динамическими страницами, к которым вы можете обратиться здесь

Надеюсь, это поможет.Удачи!

1 голос
/ 27 февраля 2012

Возможно, добавьте помощника, который возвращает структуру данных @pages в вашем файле creations.erb. То есть в вашем config.rb файле добавьте:

helpers do
  def dynamic_pages()
    @pages
  end
end

, а затем в вашем creations.erb есть:

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

И, если вы хотите ссылаться на динамические страницы на ваших динамических страницах (!), Помощник может сгенерировать этот HTML, и вы можете вызвать ... нет, неважно!

...