将3个哈希值合并到控制器内的数组中

时间:2012-06-24 20:27:08

标签: ruby-on-rails-3

我有一个带有3个哈希的控制器,我希望将它组合成1个对象以传递给视图。

@feedorders = current_user.orders.order("created_at DESC")
@feedcustomers = current_user.customers.order("created_at DESC")
@feedbooks = current_user.books.order("created_at DESC")

我该如何回去做?

2 个答案:

答案 0 :(得分:1)

@combined = {orders: @feedorders, customers: @feedcustomers, books: @feedbooks}

然后你可以用

获得订单
@combined[:orders]

编辑:

如果你只是想获得一个数组并且不关心不同类型的对象混合,那么你可以这样做

@combined = @feedorders + @feedcustomers + @feedbooks

在视图中使用这样的数组可能会有点困难。

答案 1 :(得分:0)

将它们添加到一起可能是最简单的解决方案,您可能希望重新构建它的存储方式。看起来你也想要它们的顺序,这意味着你应该将总和传递给这样的排序函数:

@combined = (@feedorders + @feedcustomers + @feedbooks).sort { |x, y| x.created_at <=> y.created_at}