ruby-on-rails - 是否可以获得 rails 中可用布局的列表(包括来自引擎的布局)?

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

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

如果他们输入错误,则会引发异常,因此我通过在 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/

相关文章:

ruby-on-rails - Rails 事件模型序列化程序,如何返回空字符串而不是 null

ruby-on-rails - 从gem继承一个类并添加本地方法

mysql - 使用 :has_many associations and multiple conditions 查找

ruby-on-rails - 如何在ActiveAdmin中自定义默认登录页面?

html - Opera 和 IE 没有正确地属性 css text-decoration

ruby-on-rails - 如何从 ActiveRecord 数组中获取 "shift"对象

javascript - 浏览器中的 GSM 编码的 WAV 文件

ruby-on-rails - 覆盖特定集成测试的 action_controller.allow_forgery_protection

swift - UIStackView 不显示

css - 为什么 li 中的 float 项会在其他缩放级别用 chrome 包裹?