Рендеринг HTML в рельсах без его фактического отображения

Мой текущий проект требует, чтобы я собрал файл .zip, содержащий HTML и текстовые шаблоны, чтобы пользователь мог загрузить их для импорта в программу маркетинга по электронной почте.

Я унаследовал этот проект, и в настоящее время код использует «фальшивую» модель (то есть модель, которая напрямую не соотносится с таблицей базы данных), в которой он хранит весь шаблон в строке, используя динамические переменные для заполнения определенных области. Затем у «поддельной» модели есть метод создания zip-файла.

Мне кажется, что должен быть лучший способ сделать это. Мне было интересно, есть ли способ переместить шаблон в файл .erb/haml, а затем написать метод, который будет заполнять файл при подготовке к архивированию? По сути, есть ли способ отобразить HTML и текстовый файл без их фактического отображения?

Спасибо за любую помощь.


person Kevin Whitaker    schedule 05.05.2010    source источник
comment
поддельная модель или контроллер? Обычно контроллер отвечает за рендеринг, а не за модель.   -  person jigfox    schedule 05.05.2010
comment
Это класс, расположенный в папке моделей, но не связанный с объектом базы данных. Вместо этого он требует, чтобы идентификатор фактической модели передавался ему при вызове класса.   -  person Kevin Whitaker    schedule 05.05.2010


Ответы (2)


Просто напишите действие и просмотр, чтобы отобразить html и текст как обычно, а затем используйте метод render_to_string, чтобы назначить содержимое строкам.

http://apidock.com/rails/ActionController/Base/render_to_string

Затем вы можете запустить метод модели (надеюсь, метод класса), чтобы создать zip-файл, используя содержимое, которое у вас теперь есть в переменных экземпляра.

person concept47    schedule 06.05.2010

Пожалуйста, взгляните на плагин для ячеек.

person Mr. Ronald    schedule 05.05.2010