Ruby on rails 在.map()中使用变量
我正在尝试编写一个助手,它使用nil值作为零求和。利用以下方法从 问题是,由于我正在编写一个帮助程序,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中的闭包,所以如果在这个范围内有字段局部
:一些字段将需要作为变量传入。然后如何在.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)