在.map()中使用变量

时间:2016-02-24 12:22:54

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

我试图编写一个使用零值作为零求和的助手。利用this answer.

中的以下方法
items.map(&:some_field).sum(&:to_i)

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

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

任何提示都将不胜感激

2 个答案:

答案 0 :(得分:6)

您可以继续使用以下代码

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

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

答案 1 :(得分:5)

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

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

块是Ruby中的闭包,因此如果此范围中有field局部变量,它也可以在块内访问。