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
请帮助我,让我知道是否有更好的方法
提前致谢
干杯
萨梅拉
编辑:
实际上我想做的是,在特定循环之前显示一些详细信息,可以在循环之后收集这些详细信息
例如:如果我有一个事务对象数组,我想在我的视图中的事务循环之前显示通过和失败事务的计数
谢谢
在其他情况下,您确实需要重用 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)
| 归档时间: |
|
| 查看次数: |
2940 次 |
| 最近记录: |