相关摘要
Show.html.erb
<% outbound_messages.each do |outbound_message| %>
<h5>Outbound Message</h5>
<%= render "trace/display_tabular_data", :data => outbound_message %>
<% end %>
Display_tabular_data.html.erb
<table border="1px solid black">
<thead>
<tr>
<%data.each do |key,value|%>
<th><%=key.capitalize%></th>
<%end%>
</tr></thead><tr>
<%data.each do |key,value|%>
<td><%=value%></td>
<%end%>
</tr>
</table>
所以会发生的是每一行数据都打印在一个唯一的表中。 所以有一个类似于http://imgur.com/1gskRvX
的东西但显然,更好的结果将是单一表格(期望结果)
Outbound Message
Message ID, Exchange, Relayed
Row1
Row2
Row3
Row4
...
....
我有什么想法可以解决这个问题? Display_tabular_data在show.html.erb的不同位置被调用至少15次,因此如果仅通过display_tabular_data而不是show.html.erb进行更改,以某种方式获得最终结果会更容易。如果不可能,请给我最好的方式?
答案 0 :(得分:1)
如果你不想为每个对象渲染一个单独的表,那么在show.html.erb中如何做这样的事情:
<% unless outbound_messages.empty? %>
<%= render 'trace/display_tabular_data', :data => outbound_messages %>
<% end %>
然后在部分:
<h5>Outbound Messages</h5>
<table border="1px solid black">
<thead>
<tr>
<% data.first.each do |key,value| %>
<th><%=key.capitalize%></th>
<% end %>
</tr>
</thead>
<% data.each do |outbound_message| %>
<tr>
<% outbound_message.each do |key,value|%>
<td><%=value%></td>
<% end %>
</tr>
</table>
只有在您确信每个outbound_message都具有相同的密钥集时才会有效。
答案 1 :(得分:0)
你去..
<% if outbound_messages.count > 0 %>
<h5>Outbound Message</h5>
<table border="1px solid black">
<thead>
<tr>
<td>Message ID</td>
<td>Exchange</td>
<td>Relayed</td>
</tr>
</thead>
<% outbound_messages.each do |outbound_message| %>
<tr>
<td>
<%= outbound_message[:message_id] %>
</td>
<td>
<%= outbound_message[:exchange] %>
</td>
<td>
<%= outbound_message[:relayed] %>
</td>
</tr>
<% end %>
</table>
<% end %>
你可以完全消除部分