在Rails 3.2 CaptureHelper中,使用capture和之间有什么区别content_for?为什么我会选择其中一个?
如果您查看content_for源,它会在内部调用capture:
def content_for(name, content = nil, &block)
if content || block_given?
content = capture(&block) if block_given?
@view_flow.append(name, content) if content
nil
else
@view_flow.get(name)
end
end
Run Code Online (Sandbox Code Playgroud)
因此,通过阅读该方法,看起来content_for的主要优点是可以使用多个块为同一命名内容多次调用它,并且每个附加调用将仅附加到已经呈现的任何内容上.然而,在捕获的情况下,如果您致电:
<% @greeting = capture do %>
Hello
<% end %>
Run Code Online (Sandbox Code Playgroud)
然后打电话:
<% @greeting = capture do %>
Or, in espanol, Hola
<% end %>
Run Code Online (Sandbox Code Playgroud)
然后最后一部分是将被捕获的唯一部分,并且'Hello'将被丢弃.然而,在content_for中执行类似操作将导致第二个调用附加到"Hello".
| 归档时间: |
|
| 查看次数: |
621 次 |
| 最近记录: |