ruby à l'intérieur de javascript bloc [slim modèle]
Il y a un moyen de mettre à ruby conditions à l'intérieur du block javascript? c'est à dire
javascript:
var config = {
common_value_1 : 1,
common_value_2 : 2
};
- if my_value === true # this must be a ruby condition
config.custom_true_value_1 = "1" ;
config.custom_true_value_2 = "#{my_value}" ;
- else
config.custom_false_value_1 = "1" ;
config.custom_false_value_2 = "#{my_value}" ;
Ou est-il une autre solution de contournement à ce problème? Parce que le laid façon que je peux utiliser son:
javascript:
var config = {
common_value_1 : 1,
common_value_2 : 2
};
- if my_value === true # this must be a ruby condition
javascript:
config.custom_true_value_1 = "1" ;
config.custom_true_value_2 = "#{my_value}" ;
- else
javascript:
config.custom_false_value_1 = "1" ;
config.custom_false_value_2 = "#{my_value}" ;
Mais je ne l'aime pas, parce que si la config a des valeurs communes entre les if et else, alors je voudrais dupliquer mon code et il serait beaucoup plus grandes et difficiles à maintenir.
Mis à jour avec de meilleurs exemples
- pourquoi si-d'autre part l'attribution mêmes valeurs? est-il OK?
- Les essais contre littérale vrai, c'est une chose étrange à faire. Pourquoi n'est-ce pas
if my_value
suffisant? - Je n'arrive pas à bien expliquer moi-même, de regarder la mise à jour de question, merci...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un style similaire à celui de la chaîne de l'interpolation. Voir l'exemple ci-dessous.
** Mise à jour ci-dessous **
Si vous voulez plus avancés de configuration je vous recommande de créer une classe, par exemple
D'autre vous avez également la possibilité de créer un rubis partielle, j'ai créé un exemple ci-dessous qui a peut-être pas très beau, mais je travaille.
Donc, mon point est qu'il ya plusieurs façons de le faire et vous devriez essayer de trouver le moyen de celui qui convient à vous et à votre demande le plus. Dans mon cas, je voudrais utiliser mon premier exemple (avant la mise à jour) si j'ai juste besoin d'une ou deux valeurs d'autre je pencherais pour la classe
ClientConfig
.En pure Slim vous n'avez pas
raw
nihtml_safe
. Dans ces cas, il suffit d'utiliser des accolades doubles comme documenté ici:Vous avez 2 options:
1. Utiliser un
ruby
sectionCe scénario est mieux pour un code complexe.
J'ai un rubis objet que je veux faire un JSON. Donc, à l'intérieur de mon slim fichier je vais créer un
ruby
section:Attention à
html_safe
: il est important de ne pas échapper les guillemets doubles.Ensuite, vous pouvez utiliser
myObject
à l'intérieur dejavascript
section:2. Utiliser des accolades doubles
Pour les cas simples, utiliser les doubles accolades à l'intérieur de la
javascript
section, comme indiqué dans @fphilipe réponse: