Как заменить erb жидкостью?


Я добавил каталог тем в свое приложение, как описано здесь, используя prepend_view_path. Он работает, как и ожидалось. Теперь я могу добавить структуру представления в мое приложение в разделе app/themes/my_theme/views

Теперь я хочу иметь возможность переопределить шаблоны erb, поместив в файл .liquid, который сразу же отобразит действие контроллера.

Например, я хочу переопределить app/views/pages/home.html.erb:

<h1><%= t 'it_works' %></h1>

...с app/themes/my_theme/views/pages/home.liquid

<h1>It works with {{ "liquid" }}</h1>

Я не хочу указывать массив путей представления (содержание было бы ужасно), но просто добавьте .liquid в качестве слоя к движку шаблонов. Возможно, однако, есть черный список защищенных представлений, которые нельзя переопределить (например, app/views/admin/*)

2 2

2 ответа:

У вас есть жидкий обработчик шаблонов? Иначе рельсы не будут знать, что вы хотите с ними делать .жидкие файлы. Смотрите этот пост в блоге: http://royvandermeij.com/blog/2011/09/21/create-a-liquid-handler-for-rails-3-dot-1/

Для вашего второго вопроса: не используйте тему для app/views/admin/* вы должны убедиться, что у вас есть AdminController, который не prepend_view_path.

Согласно документации Вы можете использовать prepend_view_path

Добавьте в свой ApplicationController следующее:

before_filter :set_theme_path

def set_theme_path
  prepend_view_path "app/themes/#{current_theme}"
end

Таким образом, Rails должен искать любые представления в вашем каталоге темы в предпочтении к представлениям по умолчанию в app / views/** / *