3

如此处所述,我已将主题目录添加到我的应用程序中,使用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/*

4

2 回答 2

3

你有液体模板处理程序吗?否则 Rails 不会知道你想用 .liquid 文件做什么。请参阅此博客文章:http ://royvandermeij.com/blog/2011/09/21/create-a-liquid-handler-for-rails-3-dot-1/

对于您的第二个问题:不为您使用主题app/views/admin/*应该确保您有一个没有prepend_view_path.

于 2013-10-11T13:01:58.873 回答
0

根据您可以使用的文档prepend_view_path

将以下内容添加到您的 ApplicationController:

before_filter :set_theme_path

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

所以 Rails 应该在你的主题特定目录中寻找任何视图,而不是 app/views/**/* 中的默认视图

于 2013-10-10T06:08:56.983 回答