Ruby on rails 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=
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}