Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
579 views
in Technique[技术] by (71.8m points)

node.js - Pug/Jade interpolation not working for attributes

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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 #{})


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...