【问题标题】:Locomotive Editor throws 'NoMethodError' when trying to loop over a model's entries尝试遍历模型的条目时,机车编辑器抛出“NoMethodError”
【发布时间】:2012-11-24 01:26:14
【问题描述】:

所以我使用 Locomotive、Ruby on Rails CMS 及其编辑器来创建博客。在机车后端,我制作了一个模型,其中包含一个可以博客文章的 slug 'posts'。然后,在我的 index.liquid 文件中,我尝试遍历模型的内容并显示全部内容。

这是液体循环:

{% for post in contents.posts %}
    {{ post.title }}
{% endfor %}

但它显示'NoMethod Error at /','undefined method contents for nil:NilClass'。如果我从 for...in 循环中删除 .posts ,则没有错误,但循环甚至不会发生一次,自然,因为只有 contents 不能循环。

我已阅读文档并且代码应该可以工作。为什么它表现得好像没有数据一样?

2012 年 12 月 11 日更新:如果我将代码推送到真正的机车引擎,它可以完美运行,只有编辑器会抛出此错误。我使用编辑器,所以我可以通过我的 IDE 而不是在浏览器中编辑代码。

2012 年 12 月 12 日更新:发现这不是机车编辑器的用途。您应该在制作网站时使用虚拟数据库,然后将其推送到引擎以将其与您自己的数据库一起使用。

【问题讨论】:

  • 您在内容中获得 nil 值,这就是您收到错误的原因。一旦你检查了内容的数据。
  • 一旦我检查了数据的内容?如何让我的内容出现在编辑制作的网站中?

标签: ruby-on-rails ruby liquid locomotivecms


【解决方案1】:
  1. 也许循环表现得好像没有数据,因为后端 Rails 连接到的没有数据。

如果您的内容在生产数据库中,Rails 也需要使用生产数据库。

rails server -e production

请参阅此问题中有关切换到生产环境的更多说明:Change a Rails application to production

  1. 如果“contents”为 nil,则“.posts”之类的访问器方法将显示为无方法错误。尝试在您的模板中添加一个部分,这样您就可以处理“contents.nil?”的情况。是真的。

  2. 由于我不熟悉 Locomotive CMS,只熟悉 Rails,因此在这种情况下可以尝试另一件事:小心对模型的单复数引用! Rails 对这些名称非常讲究,您可能需要使用“内容”而不是“内容”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多