Использование Liquid в качестве макета Ruby on Rails - PullRequest
3 голосов
/ 04 января 2010

Я хочу создать Ruby on Rails макет, и он должен быть в формате Liquid .

По сути, я пытаюсь позволить пользователям создавать свои собственные макеты и сохранять их в базе данных.

Я пытался использовать <%= Liquid::Template.parse(<code from database>).render %> в моем файле layout.erb, но там я не могу использовать команду yield (поскольку это макет, я должен иметь способ рендеринга страниц.)

Но когда я использую 'layout.liquid' с {{ content_for_layout }}, будет работать поиск НО, я не могу загрузить детали из базы данных (я имею в виду HTML-код ..)

Надеюсь, я дал понять: D)

Ответы [ 2 ]

4 голосов
/ 05 января 2010

Взгляните на этот Ruby on Rails плагин:

http://github.com/akitaonrails/dynamic_liquid_templates

Далее мы должны найти способ перехватить поведение Ruby on Rails по умолчанию для вашего контроллера.

class MyAwesomeController
  layout :get_my_db_layout
  ....
  protected
  def get_my_db_layout
    'as_if_by_a_miracle.liquid' # add your db finder here        
  end
end

Затем замените LocalFileSystem#read_template_file вашим собственным классом / методом, чтобы получить шаблон из базы данных. LocalFileSystem#read_template_file - это класс Liquid.

Я надеюсь, что эта идея полезна.

2 голосов
/ 04 января 2010

пожалуйста, прочитайте статью Tobis на

http://wiki.github.com/shopify/liquid/getting-liquid-to-work-in-rails

или посмотрите эту скринкаст

http://railscasts.com/episodes/118-liquid

...