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

标签 ruby date yaml middleman

我正在使用 Middleman 制作一个漫画书收藏应用。

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

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

date: 1977-08-01

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

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

title: "Uncanny X-Men"

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

<%= comic["title"] %>

但是,比方说,我如何才能打印日期中的月份?不可能找到任何类型的信息......我确实知道如何在 ruby​​ 或 yaml 中使用日期的不同方面,但不知道如何将日期从 yaml 渲染到 ruby​​ :(

谢谢!

最佳答案

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

date: '1977-08-01'

然后解析:

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

要获取月份,您可以添加 .month 像这样:

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

这会给你数字 8 如果你想更多地定制你的月份看起来你应该查看 strftime ,如果是这样,您甚至不需要使用 .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"]) %>

希望对您有所帮助。

关于ruby - 使用中间人将日期从 yaml 打印到 ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29332384/

相关文章:

mysql - Ruby on Rails : Querying Serialize Data

java - 在spring mvc应用中提交输入类型="date"

c# - 尝试将今天的日期与一个月前的日期进行比较

docker - 如何覆盖多个组合文件中的 docker-compose 值?

yaml - 使用 yq 归档对象数组

ruby-on-rails - 如何自定义 rails activerecord 验证错误消息以显示属性值

ruby-on-rails - RubyMine - 关闭在 "empty"行中间单击的能力

unix - 从unix命令行将毫秒时间戳转换为日期

yaml - 根据不同的值更改键值

windows - "gem install"卡住在 "updating Gem source index for [..]"