【问题标题】:Is it possible to get a list of available layouts in rails (including those from engines)?是否可以获得轨道中可用布局的列表(包括来自引擎的布局)?
【发布时间】:2013-02-01 06:32:34
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    @layouts << Dir.glob('custom_engine_path/*')
    

    【讨论】:

    • 谢谢,我们最终还是使用了 Dir
    • 我建议Dir.glob(Rails.root.join('app', 'views', 'layouts').to_s + '/*') 避免相对路径的麻烦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 2018-05-02
    相关资源
    最近更新 更多