我正在尝试使用Middleman App
进行构建%script{:type => "text/html", :id => "showItem"}
{{#items}}
%li
%a{href: "#{{id}}"} {{showName}}
{{/items}}
当%a{href: "#{{id}}"}
位于另一个{{id}}
{}
这是错误
SyntaxError at /show.html
/show.haml:110: syntax error, unexpected '}', expecting tASSOC ...tributes({}, nil, href: "#{{id}}")}>{{showName}}</a>\n ... ... ^ /show.haml:127: syntax error, unexpected ',', expecting '}' ...script>\n </body>\n</html>\n", -2, false); ... ^ /show.haml:131: syntax error, unexpected keyword_end, expecting '}'
Ruby C:/Ruby193/lib/ruby/gems/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb: in instance_eval, line 209
Web GET localhost/show.html
有没有办法解决这个问题?因为我需要使用Handlebars来解析标签属性中的变量。
感谢。
答案 0 :(得分:1)
Haml将#{{id}}
评估为字符串插值。因此它将外部#{...}
视为要评估的Ruby代码的容器(就像任何标准的Ruby代码一样),因此它会尝试在Ruby中评估{id}
。
Ruby看到id
周围的大括号,并期望一个哈希,这就是你得到“意外'}'”错误的原因。
解决方法是转义#
以避免字符串插值:
%a{href: "\#{{id}}"} {{showName}}