rails中 yeild 与 content_for之间的区别
来源:互联网 发布:国家公务员考试 知乎 编辑:程序博客网 时间:2024/06/13 19:43
yield
is how you specify where your content areas is going to go within a layout. You might have something like this:
yield
是你指明您的内容将如何放在一个布局中。你可能会有这样的事情:
<code style="margin:0px; padding:0px; border:0px; vertical-align:baseline; font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; white-space:inherit"><span class="tag" style="color:#8000;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;"><div></span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> </span><span class="tag" style="color:#8000;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;"><h1></span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> This is the wrapper!</span><span class="tag" style="color:#8000;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;"></h1></span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> </span><span class="pun" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"><%=</span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;">yield</span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> </span><span class="pun" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent">:</span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent">my_content %></span><span class="tag" style="color:#8000;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;"></div></span></code>
content_for
is how you specify which content is going to be rendered into which content area. You might have something like this:
content_for你指定的内容将被渲染到内容区域。你可能会有这样的事情:
<code style="margin:0px; padding:0px; border:0px; vertical-align:baseline; font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; white-space:inherit"><span class="pun" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"><%</span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> content_for </span><span class="pun" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent">:</span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent">my_content </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;">do</span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> %> This is the content.</span><span class="pun" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"><%</span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;">end</span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> %></span></code>
The result would be
<code style="margin:0px; padding:0px; border:0px; vertical-align:baseline; font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; white-space:inherit"><span class="tag" style="color:#8000;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;"><div></span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> </span><span class="tag" style="color:#8000;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;"><h1></span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> This is the wrapper!</span><span class="tag" style="color:#8000;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;"></h1></span><span class="pln" style="margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent"> This is the content.</span><span class="tag" style="color:#8000;margin:0px; padding:0px; border:0px; vertical-align:baseline; background-color:transparent;"></div></span></code>
They are opposite ends of the rendering process, with yield
specifying where content goes, and content_for
specifying what the actual content is.
他们在渲染过程的两端,与yield
规定内容去哪里,和content_for指定实际的内容是什么。
Is there a generally accepted best practice?
The best practice is to use yield
in your layouts, and content_for
in your views. There is a special second use for content_for
, where you give it no block and it returns the previously rendered content. This is primarily for use in helper methods where yield
cannot work. Within your views, the best practice is to stick to yield :my_content
to recall the content, and content_for :my_content do...end
to render the content.
最好的方法是将yield
用在layout中,content_for
用在view中;content_for
有另外的一种用法,当不传block给它时,它将返回之前呈现的内容;这主要用在helper中,yeild不能工作;在view中,content_for
最好用于呈现内容,yield
最好用于调取内容。
转自:http://stackoverflow.com/questions/13150983/rails-what-is-the-difference-between-content-for-and-yield
- rails中 yeild 与 content_for之间的区别
- rails中 yeild 与 content_for之间的区别
- rails中 yeild 与 content_for之间的区别
- rails yield与content_for
- 、sleep() wait() yeild()三者之间的区别?
- sleep() wait() yeild()三者之间的区别?
- Rails宝典之第八式: layout与content_for
- 线程中sleep()方法和yeild()方法的区别
- 线程中sleep()方法和yeild()方法的区别
- Rails中scaffold与models的区别
- python中yeild用法与含义
- layout与content_for
- java中"% "与 "/ "之间的区别
- Sleep 和yeild 区别
- Rails中***_url与***_path区别
- rails 中 delete 与 destroy区别
- Rails -- empty、nil、blank三者之间的区别
- &&与&之间的区别
- 【flex手机项目】教你美化ActionBar
- shell脚本
- 第8周项目2 Time类中的运算符重载
- 系统入门(5):Android 源码解析 之 setContentView
- Cocos2dx 3.5 正式版本发环境搭建(Win32/Android)
- rails中 yeild 与 content_for之间的区别
- android之Service(1)Started Service
- 走进软考(二)——编译、解释与汇编
- matlab中脚本文件和函数文件有什么区别?
- C++ —— 控制cout 输出小数
- Linux命令之reset - 终端屏幕混乱的终结者
- InetAddress 类简介
- 英特尔SR-IOV实现PCI硬件资源共享
- MVC MVP MVVM