0

私はこれを行い、ミドルマンアプリを使用して構築しようとしています

%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 を使用する必要があるためです。

ありがとう。

4

1 に答える 1

1

#{{id}}文字列補間として Haml によって評価されています。#{...}そのため、(標準の Ruby コードと同様に) 評価される Ruby コードのコンテナーとしてアウターを認識し、Ruby で評価しようとし{id}ます。

Ruby は中かっこを見てid、ハッシュを予期します。これが、「予期しない '}'」エラーが発生する理由です。

#解決策は、文字列補間を避けるために をエスケープすることです:

%a{href: "\#{{id}}"} {{showName}}
于 2013-10-02T14:26:23.713 に答える