2012-11-28 3 views
5

Il seguente codice mi dà unbalanced bracket error alla linea 4Quando tratto attribuisce a più righe in Haml, ho ottenuto un errore parentesi sbilanciato

%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 

qualche idea?

risposta

7

ho trovato il problema io stesso, la chiusura } non dovrebbe in una nuova linea come tutte le altre lingue

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

funzionerà

+0

non ha funzionato per me ... – juanpastas

+0

sembra la cosa più importante è il rientro http://stackoverflow.com/questions/13930603/haml-syntax-split-a-line-to-a-couple- di-rows – juanpastas

+2

non solo l'ultimo '}' deve avere i caratteri precedenti ma anche il primo '{' richiede anche alcuni caratteri seguenti – herophuong

3

ho trovato altra soluzione che può funzionare per gli altri. Secondo lo docs è necessario utilizzare | su contenuto multilinea. Naturalmente la parentesi di chiusura non può essere nella nuova linea. Esempio:

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

Vecchia risposta, lo so, ma questo è inaccurato. In questo esempio puoi escludere le pipe perché ogni riga termina con una virgola. – henrebotha