【问题标题】:NoMethodError when calling meta_data from Middleman Resource object从中间人资源对象调用 meta_data 时出现 NoMethodError
【发布时间】:2013-10-07 19:05:56
【问题描述】:

我不熟悉中间商和我拥有的所有可能性。我想制作一个非常简单的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>

但是中间人文档说,资源对象包含方法,我有一些示例代码也可以这样工作。

谁能告诉我我做错了什么?

提前致谢

【问题讨论】:

    标签: ruby haml middleman


    【解决方案1】:

    我想你想要Resource#content_type

    $ bundle exec middleman console
    > sitemap.resources[2].content_type
    => "text/html; charset=utf-8"
    

    【讨论】:

    • 这也给我一个“NoMethodError at / undefined method `content_type' for #<:sitemap::resource:0x000000053fd928>”错误。我认为我的 Windows 安装有问题。虽然我的机器上有一个使用 mime_type 的工作示例
    • 你是对的。我的版本是 3.0.13。更新到 3.1.6 后,content_type 现在对我有用。 mime_type 仍然没有。谢谢!
    猜你喜欢
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多