我允许管理员为其页面选择不同的布局。现在这只是一个文本输入,他们输入名字。这意味着他们必须提前知道名字。
如果他们输入错误,则会引发异常,因此我通过在 Controller 中执行以下操作来检查布局是否存在,如果不存在,则默认为“应用程序”。
lookup_context.template_exists?(@page.layout, "layouts")
如果我可以获得布局列表,我就不再需要 checkin Controller 。
我查看了actionview,但什么也没发现。 我可以使用 Dir 获取布局文件列表,但我需要包含引擎中的所有布局。
所以我想知道是否有人知道如何生成所有可用布局(包括来自引擎的布局)的列表?
最佳答案
按照惯例,所有布局都位于 app/views/layouts
目录中。默认情况下可供您使用的布局是此目录中存在的文件。要获取布局列表,请尝试以下操作:
@layouts = Dir.glob('app/views/layouts/*')
for layout in @layouts
puts layout
end
如果您已按照描述为应用中的引擎定义了自定义路径 here ,您必须显式添加这些布局:
@layouts << Dir.glob('custom_engine_path/*')
关于ruby-on-rails - 是否可以获得 rails 中可用布局的列表(包括来自引擎的布局)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14909009/