Ruby on rails 在.map()中使用变量

Ruby on rails 在.map()中使用变量,ruby-on-rails,ruby,ruby-on-rails-4,rails-activerecord,Ruby On Rails,Ruby,Ruby On Rails 4,Rails Activerecord,我正在尝试编写一个助手,它使用nil值作为零求和。利用以下方法从 问题是,由于我正在编写一个帮助程序,:一些字段将需要作为变量传入。然后如何在.map中使用该变量?如下所示: items.map(&:send(field)).sum(&:to_i) 任何提示都将不胜感激您只需手动编写传递给映射的块方法: items.map { |item| item.public_send(field) }.sum(&:to_i) 块是Ruby中的闭包,所以如果在这个范围内有字段局部

我正在尝试编写一个助手,它使用nil值作为零求和。利用以下方法从

问题是,由于我正在编写一个帮助程序,
:一些字段将需要作为变量传入。然后如何在.map中使用该变量?如下所示:

items.map(&:send(field)).sum(&:to_i)

任何提示都将不胜感激

您只需手动编写传递给
映射的块
方法:

items.map { |item| item.public_send(field) }.sum(&:to_i)

块是Ruby中的闭包,所以如果在这个范围内有
字段
局部变量,它也可以在块内部访问。

您可以使用以下代码继续

items.map(&field).sum(&:to_i)

请注意,我刚刚删除了“”符号。这里字段是您的变量

出于好奇,
项目
来自哪里?如果是从单个模型(比如
Item
),那么我想知道您是否不能执行
Item.sum(:field)
。您可能能够使用
.sum(:field)
,即使
来自不同的模型,但这需要更多的工作。
items.map(&field).sum(&:to_i)