2012-11-28 11 views
5

Poniższy kod daje mi unbalanced bracket error w wierszu 4Kiedy odcinek atrybutów multilinii w haml, mam niezrównoważony błąd wsporniki

%ul 
    - @sentences.each do |sentence| 
    %li 
     %a{id:"s-#{sentence.id}", 
     href:"/sentence/#{sentence.id}", 
     'data-type' => 'text', 
     'data-url' => "/sentence/#{sentence.id}", 
     'data-toggle' => 'manual' 
     }= sentence.content 
     %a{href:'#'} 
     %i.icon-pencil 



Haml::SyntaxError at /user/1/sentence 
Unbalanced brackets. 
file: sentences.haml location: nil line: 4 

jakiś pomysł?

Odpowiedz

7

udało się znaleźć problem sam, zamykający } nie powinny w nowej linii, jak każdy inny językach

'data-toggle' => 'manual'} 
    = sentence.content 

zadziała

+0

nie pracował dla mnie ... – juanpastas

+0

wydaje ważną rzeczą jest wcięcie http://stackoverflow.com/questions/13930603/haml-syntax-split-a-line-to-a-couple- z rzędów – juanpastas

+2

nie tylko ostatni '}' musi mieć poprzedzające znaki, ale pierwsze '{' również wymagają kilku następnych znaków, – herophuong

3

znalazłem inne rozwiązanie może pracować dla innych. Zgodnie z docs wymagane jest użycie | dla treści wielowierszowej. Oczywiście nawias zamykający nie może znajdować się w nowej linii. Przykład:

%a{id:"s-#{sentence.id}", | 
    href:"/sentence/#{sentence.id}", | 
    'data-type' => 'text', | 
    'data-url' => "/sentence/#{sentence.id}", | 
    'data-toggle' => 'manual'}= sentence.content 
+0

Stara odpowiedź, wiem, ale jest to niedokładne. W tym przykładzie możesz pominąć rury, ponieważ każda linia kończy się przecinkiem. – henrebotha