干概念,关系

时间:2014-07-25 21:02:31

标签: ruby-on-rails

你好,这是我的第一篇文章,我有一点问题,我怎样才能减少我的代码?我的意思是我有@pedidos,@pedidopending和@pedidocomplete如何减少它?当然每个动作都独立于其他动作,我的意思是我不想在一个中看到所有动作

<% @pedidos.each do |pedido| %>
  <tr>
    <td><%= pedido.usuario %></td>
    <td><%= pedido.pedido %></td>
    <td><%= pedido.entrega %></td>
    <td><%= pedido.intermedio %></td>
    <td><%= pedido.status %></td>
    <td><%= link_to 'Show', pedido %></td>
    <td><%= link_to 'Edit', edit_pedido_path(pedido) %></td>
    <td><%= link_to 'Destroy', pedido, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %> 
<% @pedido.each do |pedido| %>
  <tr>
    <td><%= pedido.usuario %></td>
    <td><%= pedido.pedido %></td>
    <td><%= pedido.entrega %></td>
    <td><%= pedido.intermedio %></td>
    <td><%= pedido.status %></td>
    <td><%= link_to 'Show', pedido %></td>
    <td><%= link_to 'Edit', edit_pedido_path(pedido) %></td>
    <td><%= link_to 'Destroy', pedido, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>

2 个答案:

答案 0 :(得分:2)

你可以这样做

<%[@pedidos, @pedidopending, @pedidocomplete ].each do |paedidos|%>
  <%pedidos.each do |pedido|%>
     <td><%= pedido.usuario %></td>
     ....
  <%end%>
<%end%>

<%all_pedidos = []%>
<%all_pedidos.push(*@pedidos).push(*@pedidopending).push(*@pedidocomplete).each do |pedido|%>
  <td><%= pedido.usuario %></td>
   ....
<%end%>

答案 1 :(得分:1)

你也可以这样做:

<% [@pedidos, @pedido].each do |pedido| %>
  <tr>
    <% [:usuario, :pedido, :entrega, :intermedio, :status].each do |attr| %>
      <td><%= pedido[attr] %></td>
    <% end %>
    <td><%= link_to 'Show', pedido %></td>
    <td><%= link_to 'Edit', edit_pedido_path(pedido) %></td>
    <td><%= link_to 'Destroy', pedido, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>