Pug(以前称为Jade)变量无效(插值)正确定位在Anchor Href内

时间:2016-07-17 21:54:03

标签: node.js express pug pugjs

我正在使用Node和Express,我正在使用Pug(以前的Jade)模板引擎来渲染我的html。在我开始尝试将变量注入我的锚链接的href之前,一切都工作正常。奇怪的是,如果我将我的Express应用程序view engine更改为jade,那么事情就会按预期开始工作。

基于other articles我已经阅读过该问题似乎是一个插值问题,但我似乎无法找到显示如何正确解决此问题的资源或文档。

实施例

我从rooms json数组中提取数据,然后使用for循环遍历每个数组元素并输出每个房间的数据。使用jade以下作品。

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}

使用上述pug无效。具体而言,a(href='/admin/rooms/delete/#{room.id}') Delete链接无法正常运行。它不是将房间ID注入链接href,而是输出#{room.id} 作为href链接的结尾部分。

如何在pug中解决此问题?

请注意,我已使用pug尝试了以下所有操作,但这些选项均无效。

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

1 个答案:

答案 0 :(得分:18)

更新:Pug 2.0引入了对插值处理方式的重大改变。

根据the changelog,以下任何工作:

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