【问题标题】:Latest Rails 3: ActionView::Template::Error (couldn't parse YAML at line 105 column 13)最新 Rails 3:ActionView::Template::Error(无法在第 105 行第 13 列解析 YAML)
【发布时间】:2011-06-24 00:54:55
【问题描述】:

我最近遇到了一个奇怪的问题或 Rails 3,可能是在新的 ruby​​gems 1.5 更新之后。基本上,当我使用乘客 3.0.2 将程序部署到 nginx 时,我立即有 500 页,并且在我的生产日志中出现了这样的问题:


ActionView::Template::Error (couldn't parse YAML at line 105 column 13):
    10: </div>
    11: <% end %>
    12: <div class="field">
    13:     <%= f.label :name %> <%= f.text_field :name %>
    14: </div>
    15: <div class="field">
    16:     <%= f.label :password %> <%= f.password_field :password %>
  app/views/sessions/new.html.erb:13:in `block in _app_views_sessions_new_html_erb___4159562374589718885_19217640_4456777064017176818'
  app/views/sessions/new.html.erb:5:in `_app_views_sessions_new_html_erb___4159562374589718885_19217640_4456777064017176818'

看起来它在环境中缺少某些东西,因此它无法识别我的所有 form_for 元素。基本上,该页面只是一个简单的登录页面,其中包含 2 个字段 - 名称和密码。其他带有表单的页面也会出现此问题,但仅在生产环境中。在开发环境中,它完全可以正常工作。我已将所有 gem 升级到最新版本,包括 rails 3.0.4,但它看起来与这个问题不太相关。在 gem 1.5 之前,我也曾经在我的 VMware 上的 ubuntu 上部署相同的东西,现在一切都很好,但是新的部署没有回头路。

我已经将它部署到 2 台运行最新 ubuntu 的机器上,两台机器都有这样的错误。 Nginx 和passenger 都是按照标准步骤安装的。显然这个问题网站永远无法运行。任何人都可以为此提供任何错误修复吗?如果可以的话,非常感谢!

PS:我写的登录页面基本来自这里: http://railstutorial.org/chapters/sign-in-sign-out#top

【问题讨论】:

  • 你能发布完整的错误堆栈跟踪吗? rails irc 会是一个更好的调试地方。

标签: ruby-on-rails-3 yaml actionview form-for


【解决方案1】:

我在config/boot.rb文件中加入以下两行,问题就解决了。

require 'yaml'
YAML::ENGINE.yamler= 'syck'

【讨论】:

  • 谢谢,它就像魅力一样!顺便说一句,我应该将第二行放在“开始”之后还是之前?
  • 也解决了我的问题。任何人都知道这个错误是如何产生的(我们需要修补这些行)?
【解决方案2】:

我遇到了同样的问题。其实我只需要第一行:

require 'yaml'

无需专门设置 YAML::Engine。

【讨论】:

    【解决方案3】:

    对于 yaml 语法选项的问题,如 TextMate 中的“查看/显示不可见”可能非常有助于定位语法问题,yaml 对此非常敏感。 在我的情况下,我只需要在所有语言环境文件中用空格替换所有选项卡。 另请注意,如果您在同一级别上没有同名的节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      相关资源
      最近更新 更多