web-dev-qa-db-ja.com

Pug(以前のJade)変数がアンカーHref内で正しく機能しない(補間されている)

私はNodeとExpressをいじっており、Pug(以前のJade)テンプレートエンジンを使用してHTMLをレンダリングしています。アンカーリンクのhref。奇妙なことに、Expressアプリを_view engine_からjadeに変更すると、期待どおりに機能し始めます。

他の記事 に基づいて読みました問題は補間の問題のようですが、この問題を正しく修正する方法を示すリソースまたはドキュメントを見つけることができません。

例.

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
12
Corey

更新:Pug 2.0では、補間の処理方法に重大な変更が加えられました。

変更ログ に基づいて、以下ののいずれかが機能するはずです

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