【问题标题】:Displaying YAML variable with EBR to appear on website使用 EBR 显示 YAML 变量以显示在网站上
【发布时间】:2019-01-17 02:07:02
【问题描述】:

我正在从事一个项目,其中数据存储在具有不同变量的 YAML 文件中,并使用 ERB 显示在网页上。我似乎无法显示“des”变量内容,但我知道当我检查时网站上正在显示 pic_caption 类语句。

我已经设法使用 ERB 显示两个不同的 YAML 变量(统计数据),如下所示:

YAML

impact:
  stats:
     - title: Number of Research Groups committed
       number: 3
     - title: Number of team members
       number: 22

ERB

<% if project.impact.key? 'stats' %>
        <% if project.impact.stats%>
          <% project.impact.stats.each do |s| %>
            <article class="impact__stat">
              <span class="impact__stat__title"><%= s.title %></span>
              <span class="impact__stat__number"><%= s.number %></span>
            </article>
          <% end %>
        <% end %>
      <% end %>

在网站上,标题和数字显示为文本,这是预期的结果。

这是我正在处理的代码:

YAML

photos:
  - url: project-photos/bus-1.jpg
  - des: "hi"
  - url: project-photos/bus-2.jpg
  - des: "o"

ERB

      <% if project.photos %>
        <% project.photos.each do |i| %>
          <figure>
            <%= image_tag i.url %>
          </figure>
          <span class="pic_caption"><%= i.des %></span>
        <% end %>
      <!-- </div> -->
      <% end %>

我希望 des 变量显示在网站上,但当我尝试执行该 ERB 代码时没有显示任何内容

【问题讨论】:

  • 请注意,没有 YAML 变量之类的东西。在YAML specification 中使用单词变量的唯一一次是在示例文档中。所以肯定是你混淆了概念,这很可能是无法解决问题的原因。 “des”是映射中的一个键,它由一个键值对组成,它是四个条目序列中的第二个条目,它本身就是键“photos”的值。这就是这个 YAML 文档的根级映射的单个键值对。

标签: html yaml erb


【解决方案1】:

你的 YAML 不是你想的那样:

photos:
  - url: project-photos/bus-1.jpg
  - des: "hi"
  - url: project-photos/bus-2.jpg
  - des: "o"

这里photos的值是一个映射序列。第一个映射有一个带有值的键url;第二个映射有一个键 des 和一个值,依此类推。

但是,您显示的代码假定列表中的每个项目实际上都有一个url 一个des 键。为此,您需要将urldes 放在同一个映射中,如下所示:

photos:
  - url: project-photos/bus-1.jpg
    des: "hi"
  - url: project-photos/bus-2.jpg
    des: "o"

请注意缺少的-- 开始一个新的列表条目。

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多