Шаблон ERB не может получить переменные экземпляра из действия контроллера:

У меня следующая проблема, которая раздирала мне душу последние 2 недели:

Я хочу создавать отчеты с предварительно обработанным html-телом:

def new
  @content_for_prerendering= Report.get_content
  @report = Report.new
  template = ERB.new(File.read("#{Rails.root}/app/views/report_template/default.html.erb"))
  @report.body = template.result(binding)
end

следуя документации ERB. Но внутри файла шаблона DEFAULT.HTML.ERB похоже, что я могу видеть только локальные переменные, такие как

 content_for_prerendering = Report.get_content

не переменные экземпляра. очень необычно привязывать каждую переменную экземпляра к локальной только для рендеринга некоторого html. Я что-то упускаю?


person prikha    schedule 29.05.2012    source источник


Ответы (1)


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

@report.body = render_to_string :file => "#{Rails.root}/app/views/report_template/default.html.erb"
person Viktor Trón    schedule 29.05.2012
comment
Ill check it out in a moment! - Did you mean render_to_string`, потому что он жалуется на render_to_text - Ошибка отсутствия метода? - person prikha; 30.05.2012
comment
Это работало как магия, но Ive chosen render_to_body. Please correct your answer to something like render_to_string` или render_to_body - person prikha; 30.05.2012