如何用液体覆盖erb?
我已经使用prepend_view_path
向我的应用添加了一个主题目录,如此处所述。 它按预期工作。 我现在可以在app/themes/my_theme/views
下的app/themes/my_theme/views
添加一个视图结构
现在,我希望能够通过放入.liquid
文件来覆盖erb
模板,该文件将立即从控制器操作中呈现。
例如,我想覆盖app/views/pages/home.html.erb
:
…使用app/themes/my_theme/views/pages/home.liquid
It works with {{ "liquid" }}
我不想指定一个视图路径数组(维护很糟糕),但只需将.liquid
作为一个层添加到模板引擎中。 但是,可能有一个无法覆盖的受保护视图的黑名单(例如app/views/admin/*
)
你有液体模板处理程序吗? 否则Rails将不知道你想用什么做什么.liquid文件。 请参阅此博客文章: http : //royvandermeij.com/blog/2011/09/21/create-a-liquid-handler-for-rails-3-dot-1/
对于你的第二个问题:不使用app/views/admin/*
的主题,你应该确保你有一个不是prepend_view_path
的AdminController。
根据文档,您可以使用prepend_view_path
将以下内容添加到ApplicationController:
before_filter :set_theme_path def set_theme_path prepend_view_path "app/themes/#{current_theme}" end
因此,Rails应该在您的主题特定目录中查找任何视图,而不是app / views / ** / *中的默认视图