【问题标题】:Jekyll - Liquid error: can't convert fixnum into StringJekyll - Liquid 错误:无法将 fixnum 转换为字符串
【发布时间】:2014-05-15 23:10:30
【问题描述】:

我正在使用 jekyll 和 ruby​​ 1.9.1;我的页面使用分页器对象:

<li><a href="{{site.paginate_path | replace: ':num', page}}">{{page}}</a></li>

给我以下:

<li><a href="Liquid error: can't convert fixnum into String">2</a></li>

但是 jekyll build 不会产生任何错误。当我尝试使用 ruby​​ 2.1.2 时,没有发生此错误(但我不想更新到 ruby​​ 2+,除非真的没有其他解决方案)。 p>

我尝试添加.to_i.to_s,但我并不真正了解它是如何工作的,而且我仍然遇到一些错误;我尝试了以下方法:

<li><a href="{{site.paginate_path|replace: ':num', page.to_i}}">{{page}}</a></li>
<li><a href="{{site.paginate_path|replace: ':num', page.to_s}}">{{page}}</a></li>

在这两种情况下,我都得到:

<li><a href="Liquid error: can't convert nil into String">2</a></li>

正在使用.to_i.to_s 来解决我的问题。为什么它不起作用?有什么想法可以调试这个错误吗?

非常感谢您的帮助!!

【问题讨论】:

  • 你想要的输出是什么?您正在尝试用字符串页面替换页码。从理论上讲,这将导致使用pagepage 而不是page2
  • site.paginate_path 不包含页码。我正在尝试将其替换为 page 变量的内容;我的预期结果是page2
  • 但是replace ':num', page:num 的出现替换为pagepage2 已经是 Jekyll 分页的标准格式。
  • 因为它适用于 ruby​​ 2+,似乎 replace 使用的是 page 变量的内容,而不是 page 作为字符串。无论如何,它并没有解释错误can't convert fixnum into String 或我如何调试它,因为我什至没有得到pagepage,而是出现了错误。
  • 我仍然没有得到你的用例。你为什么要达到这个目标?

标签: ruby jekyll liquid


【解决方案1】:

好的,这是误导。该方法是错误的,但是 Ruby 2+ 已经忽略了愚蠢的错误 :) 这是个好消息。

只要问你想知道什么,也许我们可以帮忙

【讨论】:

  • 非常感谢,大概就是这样。就像我说的,我很难更新任何东西(我使用的是默认的 debian 包,而不是 gem)。但我找到了一种解决方法,遵循@kleinfreund 评论:&lt;li&gt;&lt;a href="/page{{page}}"&gt;{{page}}&lt;/a&gt;&lt;/li&gt;
【解决方案2】:

您所指的问题似乎已由 this commit 解决。因此,使用 2.5.2+ 版本的液体 gem 应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-22
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多