Ruby on Rails 如何使用 yield 进行布局?

Posted

技术标签:

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

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

-# application.html.haml
%body= 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 就像调用默认块一样,在这种情况下就是你的视图。

【讨论】:

以上是关于Ruby on Rails 如何使用 yield 进行布局?的主要内容,如果未能解决你的问题,请参考以下文章

ruby on rails如何安装

Ruby on Rails - 如何在 Rails 方法中使用 HTML 坐标?

如何提高 Ruby On Rails 性能

Ruby on Rails 6.0.2.2 版如何使用jQuery hover() 方法

如何将 HSQLDB 与 Ruby on Rails 一起使用。

如何注销 Facebook - 在 Rails 应用程序中使用代码(Ruby on Rails Omniauth)