2017-10-18 4 views
0

J'utilise le moteur de gabarit de swig avec express et j'essaie de transmettre l'utilisateur req.user au template à l'intérieur d'un rappel. J'ai besoin de vérifier et de voir quel plan ils utilisent pour que l'entrée cochée affiche la bonne pour le bouton radio.Si déclaration avec swig res.locals.user insérer l'attribut html

itinéraire partiel:

(req, res, next) => { 
    res.locals.user = req.user; 
    console.log(res.locals.user.stripe.plan); // this shows the value I need 
    next(); 
    } 

Si la déclaration que je suis en train d'utiliser:

<input type="radio" {% if user.stripe.plan == "free" %}checked{% endif %} name="plan" value="free" data-toggle="radio"> 
+0

La première chose que je ferais pour déboguer ceci est de sortir la valeur directement dans le HTML, donc '{{user.stripe.plan}}'. Cela confirmera quelle valeur le fait réellement au modèle. Notez que tous les locals que vous passez à 'res.render' écraseront ceux de' res.locals', donc ça vaut la peine d'expérimenter avec un nom fou comme 'res.locals.somethingCrazy' et' somethingCrazy.stripe.plan', juste pour vérifiez rien d'autre ne change la valeur en cours de route. – skirtle

Répondre

0

La méthode correcte de le faire est {{ if plans[user.stripe.plan].name|lower === 'silver'}}<strong>silver</strong>{% endif %}

Faire plans[user.stripe.plan].name vous donne le nom du plan que vous puis utilisez |lower pour le rendre plus facile à comparer à silver. Mettez simplement cela dans une déclaration if et vous êtes prêt à partir.