ruby-on-rails - Heroku语法错误;日志包含加扰的行号

标签 ruby-on-rails heroku syntax-error

我在Heroku托管的Ruby on Rails 3.2.13应用程序中遇到了一个奇怪的错误,该错误无法在本地复制,也无法确定原因。

以下是症状:

在几页上,我看到了可怕的“很抱歉,但出了点问题”错误:

日志表明存在模板错误:

  Started GET "/users/sign_in" for 107.203.222.41 at 2013-05-27 13:45:18 +0000

  ActionView::Template::Error (syntax error on line 6, col 15: `'):
   15:   <%= f.password_field :password %></div>
   16: 
   21:   <div><%= f.submit "Sign in" %></div>
   19:   <% end -%>
   17:   <% if devise_mapping.rememberable? -%>
   18:     <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
 app/views/devise/sessions/new.html.erb:8:in `_app_views_devise_sessions_new_html_erb__2053461519121638579_44147620'
 app/views/devise/sessions/new.html.erb:18:in `block in _app_views_devise_sessions_new_html_erb__2053461519121638579_44147620'
   20: 

请注意行号如何乱序。

这是另一个页面的示例:
  Started GET "/blog" for 107.203.222.41 at 2013-05-27 13:36:10 +0000

  ActionView::Template::Error (syntax error on line 6, col 15: `'):
  10:     <%= render :partial => "post", :collection => @posts %>
  13:   <% end %>

  9:   <%= content_tag(:div, :id => 'blog_content') do %>
  11: 
  12:     <%= will_paginate @posts, :page_links => false %>
  14: 
  15:   <%= render 'sidebar' %>
  app/views/posts/blog.html.erb:12:in `block (2 levels) in _app_views_posts_blog_html_erb___3437273290190956225_40741600'
  app/views/posts/blog.html.erb:9:in `block in _app_views_posts_blog_html_erb___3437273290190956225_40741600'
  app/views/posts/blog.html.erb:7:in `_app_views_posts_blog_html_erb___3437273290190956225_40741600'

知道什么会导致此错误吗?我如何准确确定“第6行,第15列”指的是什么?

非常感激!

编辑

这对我来说毫无意义,但这是导致问题的原因:
 <% if devise_mapping.rememberable? -%>
   <div>
        <%= f.check_box :remember_me %>
        <%#= f.label :remember_me %>
    </div>
 <% end -%>

如果我将f.label行注释掉,则页面加载正常。如果取消注释,则会收到该语法错误。是什么原因造成的?

编辑2

我从头开始重新创建了文件,并输入了代码的相关部分:
<%= form_for(resource, :as => resource_name, :url => session_url(resource_name), :autocomplete => 'off') do |f| %>
    <div>
         <%= f.check_box :remember_me %>
         <%#= f.label :remember_me %>
    </div>
<% end %>

相同的问题:当对f.label行添加注释时,将加载页面。取消注释时,会出现相同的语法错误:
 ActionView::Template::Error (syntax error on line 6, col 15: `')

最佳答案

原来这是en.yml中的YAML问题。

具体来说,YAML最初是:

# Sample localization file for English. Add more files in this directory for other locales.
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.

en:
  activerecord:
    models:
    attributes:

如果将其插入类似于http://yamllint.com/之类的文件,则会收到我在生产日志中看到的错误消息:
syntax error on line 6, col 15: `'

将其更改回Rails默认可以解决此问题:
# Sample localization file for English. Add more files in this directory for other locales.
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.

en:
  hello: "Hello world"

该线程具有有关在Rails中进行YAML解析的更多信息,这些信息促使我确定了原因:rails error, couldn't parse YAML

关于ruby-on-rails - Heroku语法错误;日志包含加扰的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16774903/

相关文章:

javascript - 如何使用 Pusher pubnub socketio 将事件发送到单个客户端

ruby-on-rails - 如何将样式添加到 form_for 中的单个输入

mysql - Rails 无法连接到 mysql2 中的数据库

heroku - "heroku run"给出错误 "CERT_HAS_EXPIRED: certificate has expired"

ruby-on-rails - 将 Rails 4 App 部署到 Heroku redis 时出错

ruby-on-rails - 试图将项目上传到 Heroku,Heroku 说我的 binstubs 被破坏了

mysql - 使用 pg :backups restore 恢复表

编写类时出现Python错误?

oracle - 无法编译此小型oracle 10g数据库功能

bash - CRONTAB 语法错误