【问题标题】:HAML: syntax error, unexpected keyword_ensure, expecting $endHAML:语法错误,意外的keyword_ensure,期待$end
【发布时间】:2014-07-09 23:55:00
【问题描述】:

得到上述错误(作为错误列出的行号在文件末尾之后)

%H1= 'Week '+@week
-@days.each |day| #do
  %H2= 'Day '+day
  %table{:id => "day_#{day}"}
    %thead
      %tr
        %th Back Squat (reps)
        %th %1RM
        %th Weight 
        %th Front Squat (reps)
        %th %1RM
        %th Weight 
    %tbody
      -@workout[day].each |set| #do
        %tr
          %td= set.first.reps
          %td= 100 * set.first.percentage 
          %td= set.first.percentage * @bs_1rm
          -unless set.last.nil? 
            %td= set.last.reps
            %td= 100 * set.last.percentage 
            %td= set.last.percentage * @fs_1rm
          -else
            %td/
            %td/
            %td/

有什么想法吗?在 HAML 中,这通常是缩进问题,但我没有看到...

【问题讨论】:

  • 你确定大写的标题没问题吗?我从来没有这样做过,我会使用'h1',我还会将unlesselse中的%tdtr中的那些对齐。另外,那些%1RM 是什么?我不记得在哪里,但我读到将unlesselse 一起使用不是一个好习惯,如果您用英文阅读,这是没有意义的,“正确”的方法是使用ifelse
  • 小写标题并用另一个名称替换 %1RM 以防万一。没有骰子。您不能取消缩进条件块,否则它不会解析。无论如何都试过了,但它不再像预期的那样理解if/else
  • 所以我的建议是,删除部分代码,直到找出问题所在,也可以尝试用文本替换变量

标签: ruby-on-rails ruby haml


【解决方案1】:

这个:

-@days.each |day| #do

应该是:

- @days.each do |day|

使用haml,你不需要end一个块,但你必须用do打开它

【讨论】:

  • 谢谢!在我读完之后,我想“当然,所有的块都打开了,但在 HAML 中没有关闭”原来还有其他错误,但这就是破坏解析器的错误。
猜你喜欢
  • 2012-02-10
  • 2013-07-15
  • 2012-02-23
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
相关资源
最近更新 更多