gpt4 book ai didi

ruby-on-rails-3 - 同一页面上有多个 content_for

转载 作者:行者123 更新时间:2023-12-04 05:14:49 27 4
gpt4 key购买 nike

我的应用程序中有大块 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>

我使用以下代码设置 block 的内容
    <%= 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" %>

问题是如果我在同一个布局上多次使用它,原始 block 中的内容将附加到辅助 block

我尝试创建一个自定义帮助方法来解决它,但是它不返回任何内容
  def overwrite_content_for(name, content = nil, &block)
@_content_for[name] = ""
content_for(name, content &block)
end

我也可能会完全错误地解决这个问题,如果有任何更好的方法可以让内容像这样工作,我想知道。谢谢。

最佳答案

在 Rails 4 中,您可以传递 :flush 参数来覆盖内容。

<%= content_for :block_head, 'hello world', :flush => true %>

或者,如果你想通过一个街区,
<%= content_for :block_head, :flush => true do %>
hello world
<% end %>

参看。这个 helper 的 source code更多细节

关于ruby-on-rails-3 - 同一页面上有多个 content_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5631302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com