2016-07-17 156 views
6

Sto giocando con Node ed Express e sto usando il motore di template Pug (precedentemente Jade) per rendere il mio html. Tutto ha funzionato bene fino a quando ho iniziato a provare a inserire variabili nello href dei miei link di ancoraggio. La cosa strana è che se cambio l'app Express view engine a jade, le cose cominciano a funzionare come previsto.Variabili Pug (precedentemente Jade) Non funzionanti (Interpolation) Correttamente Inside Anchor Href

Sulla base di other articles Ho letto che il problema sembra essere un problema di interpolazione, tuttavia non riesco a trovare una risorsa o documentazione che mostra come correggere correttamente questo problema.

Es.

Sto prelevando i dati da un array rooms json e quindi utilizzando un ciclo for per scorrere attraverso ciascun elemento di matrice e generare i dati per ogni stanza. Utilizzando jade i seguenti lavori.

table.table.table-striped 
    thead 
    tr 
     th Name 
     th Id 
    tbody 
    each room in rooms 
     tr 
     td(style="width: 50px;") 
      a(href!="/admin/rooms/delete/#{room.id}") Delete 
     td #{allTitleCase(room.name)} 
     td #{room.id} 

L'utilizzo di pug non funziona correttamente. In particolare il collegamento a(href='/admin/rooms/delete/#{room.id}') Delete non funziona correttamente. Invece di iniettare l'ID della camera nel link href, produce letteralmente # {room.id} come la parte finale del collegamento href.

Qualche idea su come risolvere questo problema in pug?

Nota che ho provato quanto segue utilizzando pug ma nessuna di queste opzioni ha funzionato.

  • a(href="/admin/rooms/delete/#{room.id}") Delete
  • a(href!="/admin/rooms/delete/#{room.id}") Delete

risposta

11

UPDATE: Pug 2.0 introdotto rottura modifiche alle modalità di interpolazione viene gestito.

Sulla base di the changelog, una delle seguenti dovrebbe lavoro:

// to solve OP's problem, the following can be used: 
a(href="/admin/rooms/delete/" + room.id) Delete 

// Here are a few additional scenarios which use the new API 
// for anyone stumbling across this answer in the future 
- var href = "/admin/rooms/delete/" + room.id; 
a(href=href) 
a(href=`${href}`) // Node.js/io.js ≥ 1.0.0 
a(href=href + '?foo=bar') 
+0

Grazie per l'aiuto, purtroppo questo non ha funzionato per me. Mentre funzionava sul sito web di jade-lang, non sembra funzionare nella mia app Express con 'pug' come' view engine'. Penso che abbia funzionato sul sito web di jade-lang perché in realtà utilizza 'jade' e non' pug'. – Corey

+1

Hai letto [il registro delle modifiche di Pug 2.0] (https://github.com/pugjs/pug/issues/2305)? – pdoherty926

+0

Dopo aver controllato il log delle modifiche come hai suggerito, l'ho capito ... Ho cambiato il link di ancoraggio a 'a (href ="/admin/rooms/delete/"+ room.id) Delete" e questo ha funzionato. Grazie per l'aiuto, lo apprezzo. Puoi modificare la tua risposta per includere il codice corretto? Se è così, vado avanti e segna la tua risposta corretta. – Corey