2

我允许管理员为其页面选择不同的布局。现在它只是一个文本输入,他们输入名字。这意味着他们必须提前知道名字。

如果他们打错了它会引发异常,所以我通过在控制器中执行以下操作来检查布局是否存在,如果它不存在,则默认为“应用程序”。

lookup_context.template_exists?(@page.layout, "layouts")

如果我能得到一个布局列表,我就不需要再检查控制器了。

我浏览了actionview,没有发现任何东西。我可以使用 Dir 获取布局文件列表,但我需要包含引擎中的所有布局。

所以我想知道是否有人知道一种方法来生成所有可用布局的列表,包括来自引擎的布局?

4

1 回答 1

3

按照惯例,所有布局都存在于app/views/layouts目录中。默认情况下,您可用的布局是此目录中存在的文件。要获取布局列表,请尝试以下操作:

@layouts = Dir.glob('app/views/layouts/*')
for layout in @layouts
    puts layout
end

如果您已按照此处所述为应用程序中的引擎定义了自定义路径,则必须显式添加这些布局:

@layouts << Dir.glob('custom_engine_path/*')
于 2013-02-16T14:32:50.103 回答