当尝试循环模型的条目时,机车编辑器抛出'NoMethodError'

alt*_*alt 5 ruby ruby-on-rails liquid locomotivecms

所以我使用的是机车,Ruby on Rails CMS,以及它的编辑器来创建一个博客.在机车后端,我制作了一个模型,其中包含一个包含可能的博客帖子的"帖子".然后,在我的index.liquid文件中,我试图循环遍历模型的内容并显示entires.

这是液体循环:

{% for post in contents.posts %}
    {{ post.title }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

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

我已阅读文档,代码应该有效.为什么它表现得好像没有数据?

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

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

inq*_*eue 2

  1. 也许循环的行为就好像没有数据一样,因为后端 Rails 连接到的没有数据。

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

rails server -e production
Run Code Online (Sandbox Code Playgroud)

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

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

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