【发布时间】:2011-08-03 15:07:28
【问题描述】:
我的应用程序中有大块 HTML,我想将其移动到共享模板中,然后使用 content_for 和 yield 来插入必要的内容。但是,如果我在同一个布局文件中多次使用它, content_for 只会附加到前一个文件中,从而使该想法无法很好地发挥作用。有解决办法吗?
<div class="block side">
<div class="block_head">
<div class="bheadl"></div>
<div class="bheadr"></div>
<h2><%= yield :block_head %></h2>
</div>
<div class="block_content">
<%= yield :block_content %>
</div>
<div class="bendl"></div>
<div class="bendr"></div>
</div>
我使用下面的代码来设置块的内容
<%= overwrite_content_for :block_head do -%>
My Block
<% end -%>
<%= overwrite_content_for :block_content do -%>
<p>My Block Content</p>
<% end -%>
<%= render :file => "shared/_blockside" %>
问题是如果我在同一个布局上多次使用它,来自原始块的内容会附加到辅助块
我尝试创建一个自定义帮助方法来绕过它,但是它不返回任何内容
def overwrite_content_for(name, content = nil, &block)
@_content_for[name] = ""
content_for(name, content &block)
end
我也可能完全错了,如果有更好的方法让内容像这样工作,我想知道。谢谢。
【问题讨论】:
标签: ruby-on-rails-3 yield content-for