Pug/Jade interpolation not working for attributes

假如想象 提交于 2020-04-17 23:02:38

问题


I have a page which I am rendering like this:

res.render('account.pug', {user: req.user._id})

—and which is supposed to show a profile picture which corresponds to the user like this:

img(id='profilepicture' src='profilepictures/#{user}')

However, the Pug renders as:

<img id='profilepicture' src='profilepictures/#{users}' />

—instead of:

<img id='profilepicture' src='profilepictures/USERID' />

—so the correct profile picture does not display.

It is weird because when I write div #{user} it renders correctly as <div>USERID</div>, so it clearly has something to do with it being that I am interpolating on an attribute mid-string. I have tried using back ticks instead of quote marks but this did not work either.


回答1:


As noted in the Pug documentation, the #{foo} interpolation syntax is no longer supported in attributes.

Instead of using—

img#profilepicture(src='profilepictures/#{user}') // no longer supported

—you can use (as @Shinigami points out):

img#profilepicture(src='profilepictures/' + user) // supported

Or, if you have ES6 support, you can use template strings:

img#profilepicture(src=`profilepictures/${user}`) // supported

(Note that the last one uses ${} instead of #{})




回答2:


Try this

img#profilepicture(src='profilepictures/' + users)

Docs: https://pugjs.org/language/attributes.html

Helpful Site: https://pughtml.com



来源:https://stackoverflow.com/questions/59439639/pug-jade-interpolation-not-working-for-attributes

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!