2016-10-24 2 views
0

Я пытаюсь научиться Ruby-ERB шаблонов, используя следующее руководство: Tutorial Linkобучения Рубин Шаблоны Еврорадио

Я нахожусь на участке «очень простой пример» со следующим кодом:

require 'erb' 

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

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

I хотел, чтобы запустить этот код, чтобы сгенерировать HTML-файл, так что я создал файл с именем

testing.html.erb 

и побежал код с помощью следующей команды:

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

Когда я это сделал через терминал, появилось несколько ошибок, и созданный html-файл был пустым. Вот ошибки, которые я получил: enter image description here

Я надеялся, что кто-то скажет мне, что я делаю неправильно. Я что-то забыл? Или я не запускаю команду erb правильно? Любая помощь будет принята с благодарностью. Благодаря!

+0

, что если добавить символ @ в переменную: '@ weekday' –

+0

Попробую что и доложить вам! – John123

+0

@LukaszMuzyka Я сделал это, и ошибка исчезла, но сгенерированный файл все еще был некорректным. Вот ошибка: require 'erb' weekday = Time.now.strftime ('% A') simple_template = «Сегодня есть». renderer = ERB.new (simple_template) puts output = renderer.result() – John123

ответ

0

Код будет запущен, если вы передадите его рубину. То есть начать его с этим:

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

Команда erb ожидает передачи в ERB файл шаблона, а не кусок рубина кода. Он видит весь код ruby ​​как обычный текст, а только код вставки <%= weekday %>, который должен интерпретироваться как код ruby. Поэтому он пытается интерпретировать weekday - но так как он не определен, он терпит неудачу.

Попробуйте это, и я думаю, что вы можете увидеть, что происходит:

изменить содержимое файла «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() 

Тогда смотрите на выходе 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)

Обратите внимание, что весь файл test.html.erb является шаблоном.

Теперь посмотрим на выходе ruby testing.html.erb

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

Здесь шаблон является содержание переменной simple_template

0

Ваш код будет работать, если вы отправить привязки к методу результатов.

puts output = renderer.result(binding) 
более

о привязок: Ruby’s Binding Class (binding objects)

Смежные вопросы