【问题标题】:Check if a layout exists in Rails?检查 Rails 中是否存在布局?
【发布时间】:2011-02-20 15:41:58
【问题描述】:

是否有一种标准方法可以检查 Rails 中的控制器中是否存在视图布局?我试图让用户确定布局,但它需要先存在。

【问题讨论】:

    标签: ruby-on-rails views


    【解决方案1】:

    你可以使用 template_exists 吗?这是exists?的别名

    例如:template_exists?("layout_name", "layouts")

    【讨论】:

    • 您的评论无疑为我(与 OP 的问题相同)指明了正确的方向。存在吗? (和 template_exists?)是 ActionView::LookupContext (github.com/rails/rails/blob/master/actionpack/lib/action_view/…) 中的方法。我想从我的 ApplicationController 中使用它们。是不是太早了?当前的 LookupContext 是否已经设置?如何从我的 ApplicationController 访问它?
    • 我应该在发布问题之前进行搜索。 LookupContext 在 AbstractController::ViewPaths 中初始化,可以在控制器中作为 lookup_context 直接访问。
    【解决方案2】:

    据我所知,没有标准的公共方式。您可以使用这样的基本调用:

    layouts = Dir['app/views/layouts/*'].map {|f|
      File.basename(f, '.html.erb')  # returns 'layout' for 'layout.html.erb'
    }
    

    【讨论】:

    • 为什么这被否决了?虽然显然不完美,但实际上是一个有效的答案
    • 是的,这对我来说比 template_exists 更好用?下面。
    【解决方案3】:

    我认为更好的方法是将这些值存储在数据库中,让用户从中选择。

    而不是尝试通过上一篇文章中的建议进行验证。

    使用布局模型并让用户选择。

    【讨论】:

      猜你喜欢
      • 2018-02-15
      • 2011-09-29
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2016-11-16
      相关资源
      最近更新 更多