使用中间人将日期从 yaml 打印到 ruby

Print date from yaml to ruby using middleman

我正在使用 Middleman 制作漫画书 collection 应用。

我能够从 YAML 文件中获取不同的信息并将其呈现在 .erb 文件中。

现在,我像这样使用 yaml 创建了一个日期:

date: 1977-08-01

我试着在网上查看如何以不同的格式呈现它,但我找不到任何东西...

例如,我的 yaml 文档中有一个标题字段,如下所示:

title: "Uncanny X-Men"

所以我使用这个在我的 erb 文档中呈现它:

<%= comic["title"] %>

但是,比方说,我如何才能打印日期中的月份?无法找到任何类型的信息...我知道如何在 ruby 或 yaml 中使用日期的不同方面,但不知道如何将日期从 yaml 呈现为 ruby :(

谢谢!

首先,检查数据类型:comic['date'].class

如果是日期,那么您可以使用:strftime 根据需要设置日期格式!

如果不是日期,请告诉我们,我们将解释转换选项

您需要将 YAML 文件中的 date 值解析为 Ruby 日期 class,首先确保用引号将 YAML 文件中的日期值括起来,如下所示:

date: '1977-08-01'

然后解析:

<%= Date.parse(comic["date"]) %>

并获得您要添加的月份 .month 像这样:

<%= Date.parse(comic["date"]).month %>

如果你想对你的月份进行更多自定义,你应该查看 strftime,这将为你提供数字 8,如果是这样,你甚至不需要使用 .month.

理想情况下,为了让事情变干,您可以在 config.rb

中创建一个助手
# Methods defined in the helpers block are available in templates
helpers do
  def format_date(date_txt)
    date = Date.parse(date_txt)
    date.strftime("%B")
  end
end

稍后您可以像这样在模板中调用它:

<%= format_date(comic["date"]) %>

希望对您有所帮助。