2013-10-02 104 views
0

我試圖做到這一點,並建立使用中間人應用與把手

%script{:type => "text/html", :id => "showItem"} 
    {{#items}} 
    %li 
    %a{href: "#{{id}}"} {{showName}} 
    {{/items}} 

問題中間人應用Haml的語法錯誤是此行%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解析標籤屬性中的變量。

謝謝。

回答

1

Hammer將#{{id}}作爲字符串插值進行評估。因此,它將外部#{...}視爲要評估的Ruby代碼的容器(就像任何標準的Ruby代碼一樣),因此它試圖在Ruby中評估{id}

Ruby會看到圍繞id的花括號,並期待散列,這就是爲什麼你會得到「意外的」}錯誤。

的解決方案是逃脫#避免串內插:

%a{href: "\#{{id}}"} {{showName}}