私は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
更新: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')