【问题标题】:Syntax error in a partial with no Rails code没有 Rails 代码的部分语法错误
【发布时间】:2013-06-04 23:49:01
【问题描述】:

我感觉自己快疯了,但我有一个部分工作正常,然后当我刷新视图时突然出现以下错误:

syntax error, unexpected keyword_ensure, expecting keyword_end

我把它缩小到一个 HTML 代码的 sn-p。当我将部分代码缩减为这行代码时出现错误,文件中没有 ERB 表达式或任何其他内容:

<div id="product-variants"/>

但是,如果我将部分更改为包含类似的内容,例如其中任何一个,我不会收到语法错误,它会继续呈现我的视图:

<div id="aproduct-variants"/>

product-variants

<div id="product-variant"/>

我已尝试重新启动我的服务器,但我仍然看到相同的行为。我检查了奇怪的特殊字符,但我没有。我的文件名似乎还可以:_cart_form.html.erb

为什么解析器会被 HTML 属性的值弄糊涂呢?这是我的开发环境中某种奇怪的缓存问题吗?我需要清理文件系统上的某些内容吗?

【问题讨论】:

  • 你的 div 末尾的 / 是什么?正常的 div 语法是
    ,也许这会让 erb 解析器感到困惑?
  • 这是定义没有任何内容的任何 HTML 元素的标准方法。无论如何,这不是问题,我先将其归结为
    版本,然后进一步减少它以获得我在问题中的内容。
  • 我发现 better_errors gem 在尝试隔离奇怪的错误时非常有用 github.com/charliesome/better_errors railscasts.com/episodes/402-better-errors-railspanel
  • 感谢您的建议,我一直使用 better_errors。但是,这不是运行时错误,而是解析错误。在问题发生之前,我什至没有机会进入 better_errors 屏幕。
  • 你认为在那个 HTML id 之前/之后修改你的 HTML 是什么?可能会污损?
  • 标签: ruby-on-rails ruby-on-rails-3 erb


    【解决方案1】:

    没关系,我刚刚想通了。我们正在使用 Deface (https://github.com/spree/deface) 覆盖一些视图,而“product-variants”恰好是我们用来插入一些视图代码的匹配元素的名称。污损覆盖有语法错误,但不幸的是,堆栈没有向我显示。

    【讨论】:

      猜你喜欢
      • 2022-10-07
      • 1970-01-01
      • 2022-07-02
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      相关资源
      最近更新 更多