19 ruby methods yield ruby-on-rails block
yield用于调用块.这在Rails中如何yield用于布局?
-# application.html.haml
%body= yield
Run Code Online (Sandbox Code Playgroud)
它是在某处使用块还是简单地覆盖了方法?
Sha*_*aun 19
从技术上讲,yield也是在这种情况下调用一个块.但是,块是控制器操作被告知要呈现的视图.
例如,假设你有StaticContentController一个具有index它的行动,代表您的主页.正确配置路由后,您将访问主页.Rails将加载views/layouts适合该控制器的布局文件(application.html.haml除非您使用控制器的布局覆盖它).当它到达yield命令时,它会将视图插入布局内views/static_content/index.html.haml的位置yield.然后,它加载您的布局文件的其余部分.
默认情况下,所有Ruby函数都可以传递给一个块:
def twice
yield
yield
end
> twice { print 'hi ' }
=> hi hi
考虑布局的最佳方法是使用块调用的方法.
当Rails呈现模板时,它实际上是在调用Layout#render.Layout#render接受默认块.默认情况下,Rails会将您的视图作为此块传递.这意味着从布局中调用yield就像调用默认块一样,在这种情况下是您的视图.
| 归档时间: |
|
| 查看次数: |
14056 次 |
| 最近记录: |