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.haml
的yield
在布局内的位置。然后,它会加载您的布局文件的其余部分。
【讨论】:
【参考方案2】:默认情况下,所有 Ruby 函数都可以传递一个块:
定义两次 屈服 屈服 结尾 >两次打印'嗨' => 嗨嗨考虑布局的最佳方式是使用块调用的方法。
Rails 渲染模板时,实际上是在调用 Layout#render。 Layout#render 接受默认块。默认情况下,Rails 将您的视图作为此块传递。这意味着在你的布局中调用 yield 就像调用默认块一样,在这种情况下就是你的视图。
【讨论】:
以上是关于Ruby on Rails 如何使用 yield 进行布局?的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails - 如何在 Rails 方法中使用 HTML 坐标?
Ruby on Rails 6.0.2.2 版如何使用jQuery hover() 方法