迭代数据的辅助方法

时间:2014-07-07 14:32:01

标签: ruby-on-rails ruby ruby-on-rails-3

我创建了一个每日股票价格表,其中包含日期,开盘价,最高价,最低价,收盘价。

在视图中我可以看到所有必要的数据,但我想尝试创建一个辅助方法,可以迭代一列显示内容然后创建总数。

我已经开始使用代码

创建帮助器
    def pricing
    @daily_prices.each do |daily_price|
    daily_price.close
    end

但这要么是给我这个:

    [#<DailyPrice id: 1, stock_id: 1, date: "2014-07-06", open: #<BigDecimal:7fd97d107328,'0.1E1',9(36)>, high: #<BigDecimal:7fd97d107148,'0.2E1',9(36)>, low: #<BigDecimal:7fd97d106e50,'0.5E0',9(45)>, close: #<BigDecimal:7fd97d106b58,'0.15E1',18(45)>, created_at: "2014-07-06 18:28:02", updated_at: "2014-07-06 18:28:02">, #<DailyPrice id: 2, stock_id: 2, date: "2014-07-06", open: #<BigDecimal:7fd97d10f000,'0.1E2',9(36)>, high: #<BigDecimal:7fd97d10ee20,'0.12E2',9(36)>, low: #

或只显示最近的价格。

例如1.0

任何人都可以指出正确的方向,因为我正在努力开始创建方法,然后在视图中显示它们。

谢谢, 贝

1 个答案:

答案 0 :(得分:1)

您的意思是总结所有价值观吗?

可能是你可以在控制器中计算它

@daily_prices = DailyPrice.where(...).to_a
@totals = {
  close: @daily_prices.map(&:close).sum,
  open:  @daily_prices.map(&:open).sum,
  high:  @daily_prices.map(&:high).sum
}

# in view
= "Total is #{@totals[:close]}"

或者只是在视野中进行

= @daily_prices.map(&:close).sum

或者做一个帮手

def total_close(daily_prices)
  value = 0.0
  @daily_prices.each do |daily_price|
    value += daily_price.close
  end
  return value
end