Как заменить 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 ответа:
У вас есть жидкий обработчик шаблонов? Иначе рельсы не будут знать, что вы хотите с ними делать .жидкие файлы. Смотрите этот пост в блоге: 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/** / *