0

我有一个视图,我试图在数组中显示所有对象。对象是票。

<tbody>
    <% @tickets.each do |ticket| %>
        <tr>
            <td><%= ticket.ticket_number %></td>
            <td><%= ticket.title %></td>
            <td><%= ticket.product_name %></td>
            <td><%= truncate(ticket.description) %></td>
            <td><%= ticket.status %></td>
            <td><%= link_to "Show", users_ticket_path(ticket) %>
        </tr>
    <% end %>
</tbody>

我的控制器正在查找与当前用户具有相同“reseller_id”的所有用户。所以说我在同一个经销商下有 3 个用户。3 个用户都有相同的“reseller_id” 这是我的控制器不起作用。

def index
  if admin_user?
    @test = "HELLO"
    all_users = User.find_all_by_reseller_id(current_user.reseller_id)
    all_users.each do |u|
      @tickets = u.tickets
    end
  #@tickets = @tickets.paginate(page: params[:page])
  else
    @test = "WORLD"
    @tickets = current_user.tickets.paginate(page: params[:page])
end
end

这会保存一个空白数组。如何用所有票对象创建一个数组?

谢谢

4

2 回答 2

2

当前@tickets等于找到的最后一个用户的票。使用这样的东西

def index
  @tickets = []
  if admin_user?
    @test = "HELLO"
    all_users = User.find_all_by_reseller_id(current_user.reseller_id)
    all_users.each do |u|
      @tickets += u.tickets
    end
  #@tickets = @tickets.paginate(page: params[:page])
  else
    @test = "WORLD"
    @tickets = current_user.tickets.paginate(page: params[:page])
end
end
于 2013-09-19T21:54:10.603 回答
0

或者你可以在一行中完成

def index
  if admin_user?
    @test = "HELLO"
    @tickets = Ticket.where("user_id IN (?)", User.find_all_by_reseller_id(current_user.reseller_id).map(&:id))
    @tickets = @tickets.paginate(page: params[:page])
  else
    @test = "WORLD"
    @tickets = current_user.tickets.paginate(page: params[:page])
  end
end
于 2013-09-19T22:34:00.320 回答