【问题标题】:ruby display 2 dimension array红宝石显示二维数组
【发布时间】:2015-04-24 02:31:50
【问题描述】:

我正在尝试显示二维数组。使用下面的代码。但是对于每个数组的第一个下标,我必须编写一个循环。我可以使用外部循环而不是多个循环吗?

  <% tempTickets = subject['permailaddr-addrline1'] %>  
  <% cnt = tempTickets.length %>
  <% tempTickets.each_with_index do |ticket, index| %>
<div>
<tr>
  <td><li class="entity_info"><div><span class="label"><%= subject['memhead-mem-recno'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['permailaddr-addresstype'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['permailaddr-addrline1'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['permailaddr-state'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['permailaddr-suburb'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['permailaddr-postcode'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['permailaddr-countrycode'][index] %></span></div></li></td>
</tr>
</div>
  <% end %>
  <% tempTickets = subject['perresiaddr-addrline1'] %>  
  <% cnt = tempTickets.length %>
  <% tempTickets.each_with_index do |ticket, index| %>
<div>
<tr>
  <td><li class="entity_info"><div><span class="label"><%= subject['memhead-mem-recno'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['perresiaddr-addresstype'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['perresiaddr-addrline1'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['perresiaddr-state'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['perresiaddr-suburb'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['perresiaddr-postcode'][index] %></span></div></li></td>
  <td><li class="entity_info"><div><span class="label"><%= subject['perresiaddr-countrycode'][index] %></span></div></li></td>
</tr>
</div>
  <% end %>

【问题讨论】:

    标签: ruby-on-rails ruby arrays ruby-on-rails-3


    【解决方案1】:
    ticketLists = [ subject['permailaddr-addrline1'], subject['perresiaddr-addrline1'] ]
    
    ticketLists.each do |tempTickets|:
    

    然后您包含要为每个 tempTickets 数组执行的代码。

    【讨论】:

    • 循环数很好,但循环内的值没有正确显示。还有什么方法可以获取这些值?
    【解决方案2】:

    这样的事情应该可以工作。

    <% ['permailaddr', 'perresiaddr'].each do |prefix| %>
      <% tempTickets.each_with_index do |ticket, index| %>
        <div>
        <tr>
          <td><li class="entity_info"><div><span class="label"><%= subject['memhead-mem-recno'][index] %></span></div></li></td>
          <% ['addresstype', 'addrline1', 'state', 'suburb', 'postcode', 'countrycode'].each do |field_name| %>
            <td><li class="entity_info"><div><span class="label"><%= subject["#{prefix}-#{field_name}"][index] %></span></div></li></td>
          <% end %>
        </tr>
        </div>
      <% end %>
    <% end %>
    

    请注意,我还将字段名称 - ['addresstype', 'addrline1', 'state', 'suburb', 'postcode', 'countrycode'] - 提取到一个数组中并循环遍历它们,以保存一些重复的 html - 但如果您不想要它,则不需要它。

    【讨论】:

    • 好的,我没有测试过。基本概念应该有效 - 您可能需要修改语法或其他内容。
    【解决方案3】:

    试试看,

     2.times do |i|
        ...
       <%= subject['#{ i==0 ? "permailaddr" : "perresiaddr"}-addresstype'][index] %>
        ...
     end
    

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 1970-01-01
      • 2017-08-11
      • 2011-11-18
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      相关资源
      最近更新 更多