1

私は仲買人と私が持っているすべての可能性に不慣れです。プロジェクト内のナビゲーションを高速化するために、すべてのページ タイプを一覧表示するインデックス ページとして機能する非常に単純な haml スクリプトを作成したいと考えています。

コードは次のとおりです。

---
layout: no_layout
---
- resources = sitemap.resources.sort {|a,b| a.url <=> b.url}

- pages = Array.new

- resources.each do |resource|
    - metadata = resource.metadata[:page]
    - if resource.mime_type.match(/^text\/html/) && metadata["title"]
        - element = Hash.new
        - element["url"] = resource.url     
        - element["title"] = metadata["title"]
        - element["desc"] = metadata["desc"]

        - if element["url"].start_with?('/')
            - element["url"].slice!(0) 
        - pages.push(element)

%h1 Page elements
- if pages.length > 0
    %ul
        - pages.each do |page|
            %li
                %a{:href => page["url"]} #{page["title"]}
                - if page["desc"]
                    %br
                    = page["desc"]
- else
    No pages found.

悲しいことに、Middleman は次のエラーを生成します。

NoMethodError at /
undefined method `mime_type' for #<Middleman::Sitemap::Resource:0x000000069df020>

しかし、Middleman Documentation によると、Resources オブジェクトにはメソッドが含まれており、そのように機能するサンプル コードもいくつかあります。

誰かが私が間違っていることを教えてもらえますか?

前もって感謝します

4

1 に答える 1

0

Resource#content_type代わりに欲しいと思います。

$ bundle exec middleman console
> sitemap.resources[2].content_type
=> "text/html; charset=utf-8"
于 2013-10-06T19:37:52.387 に答える