2016-07-17 44 views
6

Gram w Node i Express i używam silnika szablonowego Pug (wcześniej Jade) do renderowania mojego html. Wszystko działa dobrze, dopóki nie zacząłem próbować wprowadzać zmiennych do href moich łączy kotwicznych. Co dziwne, jeśli zmienię moją aplikację Express na view engine na jade, wszystko zacznie działać zgodnie z oczekiwaniami.Zmienne mopsy (dawniej Jade) nie działają (interpolacja) poprawnie wewnątrz kotwicy Href

Na podstawie przeczytałem, że problem wydaje się być problemem interpolacji, jednak nie mogę znaleźć zasobu lub dokumentacji, która pokazuje, jak poprawnie rozwiązać ten problem.

Przykł.

Wyciągam dane z tablicy json rooms, a następnie za pomocą pętli for przechodzę przez każdy element tablicy i wyprowadzam dane dla każdego pokoju. Korzystanie z następujących prac.

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} 

Powyższe NIE działa poprawnie. W szczególności link a(href='/admin/rooms/delete/#{room.id}') Delete nie działa poprawnie. Zamiast wstawiania identyfikatora pomieszczenia do łącza href, dosłownie wyprowadza # {room.id} jako końcową część łącza href.

Wszelkie pomysły, jak to naprawić w pug?

Należy zauważyć, że próbowałem wszystkich następujących przy użyciu pug, ale żadna z tych opcji nie zadziałała.

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

Odpowiedz

11

UPDATE: Pug 2.0 wprowadzono zmiany w sposobie łamiącym interpolacja jest obsługiwane.

podstawie the changelog, którekolwiek z poniższych powinien pracy:

// 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

Dzięki za pomoc, niestety to nie działa dla mnie. Chociaż działało to na stronie jade-lang, to nie działa w mojej aplikacji Express z uruchomionym 'mopsem' jako 'mechanizmem widoku '. Myślę, że działało na stronie jade-lang, ponieważ w rzeczywistości używa 'jade', a nie' mopsa '. – Corey

+1

Czy przeczytałeś [dziennik zmian Pug 2.0] (https://github.com/pugjs/pug/issues/2305)? – pdoherty926

+0

Po sprawdzeniu listy zmian, tak jak zasugerowałeś, wymyśliłem to ... Zmieniłem link zakotwiczenia na 'a (href ="/admin/rooms/delete/"+ room.id) Delete" i działało. Dzięki za pomoc, doceniam to. Czy możesz edytować swoją odpowiedź, dodając poprawny kod? Jeśli tak, zaznaczę poprawną odpowiedź. – Corey