Rails修改循环中的数组

时间:2013-06-11 20:26:37

标签: ruby-on-rails arrays loops

我认为这将是一项简单的任务,但我发现很难让Rails做我想做的事。

我有一系列日期。

所以我认为这样的事情会起作用:

  def index
    @datetimes = Books.all.map(&:checkouts).flatten.map(&:out_date)
    @datetimes.each do |c|
      c.to_date
    end
  end

然后我可以在我的观点中称呼它:

%ul
-@datetimes.each do |c|
    %li=c

如何修改数组中的每个键?我在这里缺少什么?

非常感谢你对像我这样的新手,新手和无知的爱好者的好感。

1 个答案:

答案 0 :(得分:1)

.each不会修改来电者。它只是循环通过。您可以将控制器操作更改为:

@datetimes = Books.all.map(&:checkouts).flatten.map{|e| e.out_date.to_date}

您可能还想探索包括:图书查询中的结帐以避免N + 1查询。或者也许做这样的事情。

Checkout.where("book_id is not null").map{|e| e.out_date.to_date}