5

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

这是液体循环:

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

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

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

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

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

4

1 回答 1

2
  1. 可能循环表现得好像没有数据,因为 Rails 连接的后端没有数据。

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

rails server -e production

请参阅此问题中有关切换到生产环境的更多说明:将 Rails 应用程序更改为生产环境

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

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

于 2012-12-17T22:31:05.717 回答