Rails 3将对象附加到数组

时间:2013-09-19 21:36:48

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

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

<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

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

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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