Rails 产量 - content_for 问题

sam*_*207 1 yield ruby-on-rails view content-for

我有以下要求。

例如:有一个交易表,其中包含交易名称和金额列。我想循环遍历交易并显示其详细信息(交易名称和金额),最后我想在页面的头部(循环之前)部分显示总金额(所有金额的总和)。(将其视为摘要显示)

示例页面结构如下

所有交易的总和 - 200

交易金额 trn1 100 trn2 50 trn3 50

我尝试使用 Yield 和 content_for 标签,但没有成功。

我的代码如下(我在我的 erb 文件中调用。)

<%= yield :transaction_summary %> 

<table>
  <% total_amount = 0%>
  <%for transaction in @transactions%>
    <tr>
      <td><%= transaction.transaction_name %></td>
      <td><%= transaction.amount %></td>
      <% total_amount += transaction.amount %>
    </tr>
  <%end%>
  </table>

<% content_for :transaction_summary do %>
   <h1>
     Sum of all the transactions - <%= total_amount %>
   </h1>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我在视图内部使用(不在布局内部

我正在使用 Rails 2.2.2

请帮助我,让我知道是否有更好的方法

提前致谢

干杯

萨梅拉

编辑:

实际上我想做的是,在特定循环之前显示一些详细信息,可以在循环之后收集这些详细信息

例如:如果我有一个事务对象数组,我想在我的视图中的事务循环之前显示通过和失败事务的计数

谢谢

rob*_*obd 5

在其他情况下,您确实需要重用 content_for,以下内容可能会很有用。

在 Rails 4 中,您可以将其作为选项传递给 content_for::flush => true

<% content_for :example, flush: true do %>
  <h1>Deletes previous content</h1>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在Rails 3.1.1(大约)中,您可以通过定义和使用以下内容(例如在application_helper中)在yield时从view_flow中删除内容:

def yield_and_flush!(content_key)
  view_flow.content.delete(content_key)
end
Run Code Online (Sandbox Code Playgroud)