2013-10-02 6 views
0

Я пытаюсь сделать это и построить с помощью Middleman AppПосредник App Haml ошибка синтаксиса с Рули

%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 для анализа переменной в атрибуте тега.

Спасибо.

ответ

1

#{{id}} оценивается Haml как интерполяция строк. Поэтому он видит внешний #{...} в качестве контейнера для кода Ruby, который будет оцениваться (как и любой стандартный код Ruby), и поэтому он пытается оценить {id} в Ruby.

Ruby видит фигурные скобки вокруг id и ожидает хэш, поэтому вы получаете сообщение об ошибке «неожиданное».

Решение избежать # избежать интерполяции строк:

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

 Смежные вопросы

  • Нет связанных вопросов^_^