2013-10-07 2 views
2

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

Теперь я хочу, чтобы иметь возможность переопределить 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/*)

ответ

3

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

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

+0

+1 для решения «черного списка». Заглядывая в блог-сообщение обработчика сейчас. –

+0

Полностью сработал, спасибо! –

0

Согласно documentation вы можете использовать prepend_view_path

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

before_filter :set_theme_path 

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

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

+0

Да, я сделал это. Но это только читает файлы erb. Я хочу использовать 'жидкость' вместо' erb'. –

+0

Как вы назовете свои шаблоны? Вероятно, они должны быть названы foo.html.liquid –

+0

Это также немного несправедливо, чтобы проголосовать за ответ, который не является неправильным. Как вы признаете, вы делаете то, что я разместил. Может быть миллион вещей, которые не соответствуют вашей среде, которые вы не раскрыли или не уточнили в своем вопросе. –