1

I'm trying to automatically generate a list of links to pages that have certain frontmatter in them, but every time I try to use sitemap.where(), I get a NoMethodError. For example, the following line:

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

produces this output:

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

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

I was wondering if I accidentally messed something up in my project, so I generated a new Middleman project, but I had the same problem when I tried to use sitemap.where. Is there a solution to this or another way that I can query all of the pages?

Zak
  • 2,688
  • 4
  • 29
  • 45

1 Answers1

3

The where method is part of ActiveRecord and might not work in Middleman.

To get only those pages in the sitemap which have a particular property, you can use Ruby's select:

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

This code will print a (very basic) list of the URLs of pages that match your criteria.

Adam Hollett
  • 421
  • 2
  • 8