2

我错过了一些关于变量可见性的东西。在我的 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>
4

2 回答 2

2

无需创建自定义帮助程序,您可以使用 yaml 数据文件来填充模板并生成链接列表。让我解释。

在与源目录和构建目录相同的级别上,确保您创建了一个数据目录。IE:

  • 建造
  • 来源
  • 数据

在其中创建一个名为“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"

ETC...

现在,在你的 config.rb 文件中替换@pages.each 做 |p| data.pages.each 做 |p|

data.pages.each 循环遍历新创建的 yaml 文件中的每个项目

然后,您可以简单地在索引文件 (creations.html) 中引用相同的文件,如下所示:

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

我在动态页面上遇到了类似的问题,您可以在此处参考

希望这可以帮助。祝你好运!

于 2013-07-14T05:05:01.763 回答
1

或许添加一个帮助程序,返回@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,你可以调用......不,没关系!

于 2012-02-27T06:54:26.977 回答