中间人 sitemap.where 不存在

Middleman sitemap.where doesn't exist

我试图自动生成一个链接列表,这些链接指向其中包含某些前言的页面,但每次我尝试使用 sitemap.where() 时,我都会得到一个 NoMethodError。例如,下面一行:

 <%= sitemap.where(:title=>"about") %>

产生这个输出:

NoMethodError at /
undefined method `where' for #<Middleman::Sitemap::Store:0x007f9b95c7d890>

Ruby    layouts/layout.erb: in block in singleton class, line 20
Web GET localhost/

我想知道我是否不小心把我的项目搞砸了,所以我生成了一个新的 Middleman 项目,但是当我尝试使用 sitemap.where 时遇到了同样的问题。是否有解决此问题或其他方法可以查询所有页面的方法?

where 方法是 ActiveRecord 的一部分,可能无法在 Middleman 中使用。

要仅获取站点地图中具有特定 属性 的页面,您可以使用 Ruby 的 select:

<% sitemap.resources.select{|p| p.data.title == 'about'}.each do |page| %>
  <%= page.url %>
<% end %>

此代码将打印(非常基本的)符合您条件的网页的 URL 列表。