Ruby on rails RubyonRails如何在布局中使用yield?
Ruby on rails RubyonRails如何在布局中使用yield?,ruby-on-rails,ruby,methods,block,yield,Ruby On Rails,Ruby,Methods,Block,Yield,yield用于调用块。在布局使用yield的Rails中,这是如何工作的 -# application.html.haml %body= yield 它是在某处使用块还是简单地重写了该方法?从技术上讲,yield也在该上下文中调用块。但是,该块是控制器操作被告知渲染的视图 例如,假设您有一个StaticContentController,上面有一个索引操作,表示您的主页。正确配置路由后,您可以访问主页。Rails将在视图/layouts中加载适合该控制器的布局文件(application.ht
yield
用于调用块。在布局使用yield
的Rails中,这是如何工作的
-# application.html.haml
%body= yield
它是在某处使用块还是简单地重写了该方法?从技术上讲,
yield
也在该上下文中调用块。但是,该块是控制器操作被告知渲染的视图
例如,假设您有一个
StaticContentController
,上面有一个索引
操作,表示您的主页。正确配置路由后,您可以访问主页。Rails将在视图/layouts
中加载适合该控制器的布局文件(application.html.haml
,除非您用控制器的布局覆盖该文件)。当它到达yield
命令时,它会在views/static\u content/index.html.haml
的布局中yield
所在的位置插入视图。然后,它加载布局文件的其余部分。默认情况下,所有Ruby函数都可以传递一个块:
def twice
yield
yield
end
> twice { print 'hi ' }
=> hi hi
def两次
产量
产量
结束
>两次{打印“hi”}
=>嗨,嗨
考虑布局的最佳方式是使用块调用方法
Rails渲染模板时,实际上是在调用Layout#render。布局#渲染接受默认块。默认情况下,Rails作为此块通过视图。这意味着从布局中调用yield类似于调用默认块,在本例中是视图