Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails在循环中修改数组_Ruby On Rails_Arrays_Loops - Fatal编程技术网

Ruby on rails Rails在循环中修改数组

Ruby on rails Rails在循环中修改数组,ruby-on-rails,arrays,loops,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=

我认为这将是一项简单的任务,但我发现很难让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
如何修改数组中的每个键?我错过了什么


谢谢,非常感谢你对像我这样的新手、无知的业余爱好者如此友好。

。每个
都不会修改调用者。它只是循环通过。您可以将控制器操作更改为:

@datetimes = Books.all.map(&:checkouts).flatten.map{|e| e.out_date.to_date}
您可能还希望在Books查询中包括:checkout以避免N+1查询。或者做类似的事情

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

Philip…我是ruby新手级别。我听说过N+1查询,但并不完全理解这个概念。你能详细说明一下吗?我应该将嵌套模型移动到单独的集合中吗?这会让事情变得更容易吗?另外…我知道这不是最初的问题。但是如果我想对每个值做数学运算呢?比如加上一年,或者找出那个日期和另一个日期之间的差异?@KevinBrown查看N+1的信息。如果要对每个值进行数学运算,只需在最后一个映射{}中进行运算。也就是说,
…映射{e|(e.out|u date+1.year)。到{u date}