【问题标题】:How does Ruby on Rails use yield for layouts?Ruby on Rails 如何使用 yield 进行布局?
【发布时间】:2011-06-18 22:08:14
【问题描述】:

yield 用于调用块。这在 yield 用于布局的 Rails 中如何工作?

-# application.html.haml
%body= yield

它是在某处使用块还是简单地覆盖了该方法?

【问题讨论】:

    标签: ruby-on-rails ruby methods block yield


    【解决方案1】:

    从技术上讲,yield 也在这种情况下调用了一个块。但是,该块是您的控制器操作被告知要呈现的视图。

    例如,假设您有一个StaticContentController,上面有一个代表您的主页的index 操作。正确配置路由后,您将访问您的主页。 Rails 将在views/layouts 中加载适合该控制器的布局文件(application.html.haml,除非您用控制器的布局覆盖它)。当它到达yield 命令时,它会将视图插入到views/static_content/index.html.hamlyield 在布局内的位置。然后,它会加载您的布局文件的其余部分。

    【讨论】:

      【解决方案2】:

      默认情况下,所有 Ruby 函数都可以传递一个块:

      定义两次 屈服 屈服 结尾 >两次{打印'嗨'} => 嗨嗨

      考虑布局的最佳方式是使用块调用的方法。

      Rails 渲染模板时,实际上是在调用 Layout#render。 Layout#render 接受默认块。默认情况下,Rails 将您的视图作为此块传递。这意味着在你的布局中调用 yield 就像调用默认块一样,在这种情况下就是你的视图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 2015-01-25
        • 1970-01-01
        • 2016-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多