gpt4 book ai didi

ruby-on-rails - 渲染具有多个 block 的部分/布局

转载 作者:行者123 更新时间:2023-12-04 05:44:52 25 4
gpt4 key购买 nike

我有一个非常简单的要求 - 我有一个包含标题和正文的布局。它是页面的子布局,而不是页面本身。

这种布局在多个页面中重复出现,它周围的结构可能会发生变化。所以我希望能够将标题的内容和正文的内容与包含它的结构分开。

我的第一次尝试是使用渲染部分作为布局,使用命名产量来渲染标题和正文:

<header class="Resource-header">
<%= yield :resource_header %>
</header>
<div class="Resource-body">
<%= yield :resource_body %>
</div>

然后从我的模板中渲染它,如下所示:
<%= render layout: 'admin/resource' do %>

<% content_for :resource_header do %>
<% end %>

<% content_for :resource_body do %>
<% end %>

<% end %>

但是,这没有任何效果。

我开始玩弄事物的顺序,并发现如果在调用部分之前声明了 content_for 块,这种方法确实有效:
<% content_for :resource_header do %>
<% end %>

<% content_for :resource_body do %>
<% end %>

<%= render layout: 'admin/resource' do %><% end %>

然而,这只是让人感到难以置信的 hacky。好像 content_for是全局作用域的, content_for块和局部渲染之间没有关联。

那么我实现这一目标的正确方法是什么?

最佳答案

我只是碰巧有完全相同的问题。

解决办法是:
在您的部分布局文件 'admin/resource' 正文中:

<header class="Resource-header">
<%= yield resource, :resource_header %>
</header>
<div class="Resource-body">
<%= yield resource, :resource_body %>
</div>

在你的模板中做:
<%= render layout: 'admin/resource' do |resource, section| %>
<% case section %>
<% when :resource_header %>
Resource header shows here.
<% when :resource_body %>
Resource body shows here.
<% end %>

<% end %>

关于ruby-on-rails - 渲染具有多个 block 的部分/布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27090607/

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