0

相关片段

显示.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 中进行更改以某种方式获得这个最终结果,那将会容易得多。如果不可能,请给我最好的方法?

4

2 回答 2

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 都具有相同的密钥集时,这才有效。

于 2013-03-06T14:33:01.740 回答
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 %>

您可以完全消除部分

于 2013-03-06T14:33:49.493 回答