2016-07-17 3 views
6

NodeとExpressで遊んでいます。私はPug(以前のJade)テンプレートエンジンを使ってHTMLを表示しています。私がアンカーリンクのhrefに変数を注入しようとするまで、すべてが正常に機能していました。奇妙なことは、私がExpressアプリケーションview enginejadeに変更すると、期待どおりに動作することです。アンカーの内部でPug(以前のJade)変数が正しく機能しない(補間)Href

に基づいてother articles私はこの問題を補間の問題として認識していますが、この問題を正しく修正する方法を示すリソースまたはドキュメントは見つかりませんでした。

Ex。

roomsjsonアレイからデータを取得してから、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

答えて

11

UPDATE:パグ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') 
+0

おかげで、残念ながらこれは私のために動作しませんでした。 jade-langのウェブサイトで動作していましたが、 'pug'を' view engine'として実行している私のExpressアプリケーションでは動作していません。私はそれがjade-langのウェブサイトで働いていたと思うのですが、それは実際には「pade」ではなく「jade」を使っているからです。 – Corey

+1

[Pug 2.0の変更履歴](https://github.com/pugjs/pug/issues/2305)を読んだことがありますか? – pdoherty926

+0

あなたが示唆したようにチェンジログをチェックアウトした後、私はそれを理解しました。アンカーリンクを 'a(href ="/admin/rooms/delete/"+ room.id)Delete'に変更しました。助けてくれてありがとう、私はそれを感謝します。答えを編集して正しいコードを含めることはできますか?もしそうなら、私は先に進み、あなたの答えを正しいものにします。 – Corey

関連する問題