2013-05-14 4 views
0

У меня есть строка, которая хранится в моей базе данных, которая используется как пользовательский макет.Можно ли преобразовать строку в частичную?

Я хотел бы разобрать их пользовательский макет внутри моего макета приложения, используя:

render_to_string(partial: custom_template, layout: "pdf_template", locals: locals) 

Где custom_template это строка из БД. Однако, когда я пытаюсь это сделать, я получаю:

NoMethodError: undefined method `to_sym' for nil:NilClass 

Можно ли делать то, что я делаю? Если да, то что я могу сделать, чтобы закончить это?

я заметил, что я могу попробовать что-то вроде этого:

render_to_string(text: template, locals: locals, template: "pdf_template") 

И

render_to_string(inline: template, locals: locals, template: "pdf_template") 

Но делать это так, вдруг не может найти шаблон и возвращает:

ActionView::MissingTemplate: Missing template layouts/pdf_template with {:handlers=>[:erb, :builder, :coffee, :haml], :formats=>[:pdf], :locale=>[:en, :en]}. Searched in: 
    * "/Users/elephanttrip/Sites/shasta/app/views" 

Это странно, потому что он отлично работал в его текущем местоположении и определении.

ответ

0

Если вы хотите сохранить свои представления в базе данных, вы должны использовать другой механизм рендеринга, а не Rails по умолчанию. Check жидкость драгоценнный камень (http://railscasts.com/episodes/118-liquid, http://rubygems.org/gems/liquid).

Например, мы используем этот камень для рендеринга электронных писем для наших майнистов (их шаблоны хранятся в БД).

+0

Да, я фактически использую Liquid в этом процессе. Но я пытаюсь обернуть «свои» макеты глобальной «оберткой», которая также является нашим макетом. Я не считаю, что Liquid справляется с этим. – Trip

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