2016-10-24 1 views
0

Je suis en train d'apprendre Ruby ERB modèles à l'aide du guide suivant: Tutorial Linkapprentissage Ruby ERB Modèles

Je suis sur la section "exemple très simple" avec le code suivant:

require 'erb' 

weekday = Time.now.strftime('%A') 
simple_template = "Today is <%= weekday %>." 

renderer = ERB.new(simple_template) 
puts output = renderer.result() 

I voulu exécuter ce code pour générer un fichier html donc je créé un fichier appelé

testing.html.erb 

et couru le code avec la commande suivante:Lorsque je l'ai fait via le terminal, plusieurs erreurs sont apparues et le fichier html qui a été généré était vide. Voici les erreurs que j'ai reçues: enter image description here

J'espérais que quelqu'un pourrait me dire ce que je faisais mal. Suis-je en train d'oublier quelque chose? Ou ne suis-je pas en train d'exécuter la commande erb correctement? Toute aide serait grandement appréciée. Merci!

+0

si vous ajoutez symbole @ à votre variable: '@ weekday' –

+0

Je vais essayer et de faire rapport à vous! – John123

+0

@LukaszMuzyka Je l'ai fait et l'erreur est partie, mais le fichier généré était toujours incorrect. Voici l'erreur: require 'erb' weekly = Time.now.strftime ('% A') simple_template = "Aujourd'hui c'est". renderer = ERB.new (simple_template) met en sortie = renderer.result() – John123

Répondre

0

Le code sera exécuté si vous le transmettez à ruby. C'est initié avec ceci:

ruby testing.html.erb > new-file.html 

La commande erb attend à transmettre un fichier modèle Erb et non un morceau de code rubis. Il voit tout le code ruby ​​comme du texte brut, avec juste le code d'insertion <%= weekday %> devant être interprété comme du code ruby. Donc, il essaye d'interplier weekday - mais comme il n'a pas été défini il échoue.

Essayez et je pense que vous pouvez voir ce qui se passe:

Modifier le contenu du fichier « testing.html.erb » à:

require 'erb' 

weekday = Time.now.strftime('%A') 
simple_template = "Today is <%= Time.now %>." 

renderer = ERB.new(simple_template) 
puts output = renderer.result() 

Ensuite, regardez à la sortie de erb testing.html.erb:

require 'erb'

weekday = Time.now.strftime('%A') simple_template = "Today is 2016-10-24 08:40:41 +0100."

renderer = ERB.new(simple_template)

Notez que le fichier entier 'testing.html.erb' est le modèle.

Maintenant, regardez la sortie de ruby testing.html.erb

Today is 2016-10-24 08:42:16 +0100.

Ici, le modèle est le contenu de la variable simple_template