是否有可能获得rails中可用布局的列表(包括来自引擎的布局)?

时间:2013-02-16 09:53:26

标签: ruby-on-rails ruby-on-rails-3 layout ruby-on-rails-3.2 actionview

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

如果他们输入拼写错误会引发异常,所以我通过在控制器中执行以下操作来检查布局是否存在,如果它不存在则默认为“application”。

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

如果我可以获得布局列表,我不再需要检查控制器。

我已经看了一下动作视图但什么也没找到。 我可以使用Dir来获取布局文件列表,但我需要包含引擎的所有布局。

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

1 个答案:

答案 0 :(得分:3)

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

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

如果您已按照here所述为应用中的引擎定义了自定义路径,则必须明确添加这些布局:

@layouts << Dir.glob('custom_engine_path/*')
相关问题