【发布时间】:2015-12-28 22:33:14
【问题描述】:
我正在尝试从 yahoo Finance gem 创建一个简单的数据提取器。我有一个嵌套的安全路由设置 has_many Price
价格控制器如下:
class PricesController < ApplicationController
before_action :set_security
before_action :set_price, only: [:show, :edit, :update, :destroy]
def new
@price = Price.new
end
private
def set_price
@price = Price.find_by_name(params[:id])
end
def price_params
params.require(:price).permit(:date, :open, :high, :low, :close, :volume, :security_id)
end
def set_security
@security = Security.find_by_ticker(params[:security_id])
end
end
嵌套路由可以很好地从表单手动创建子价格记录。我正在尝试为从以下代码生成的数组中的每个结果创建价格记录:
class Datapuller
def self.download_historical
yahoo_client = YahooFinance::Client.new
data = yahoo_client.historical_quotes("FB")
data.each do |i|
@ticker = Security.find_by_ticker(data[0].symbol )
price = @ticker.prices.new()
price.security_id = @ticker
price.date = data[0].date
price.open = data[0].open
price.high = data[0].high
price.low = data[0].low
price.close = data[0].close
end
end
end
我想从按钮链接调用此方法,但现在我在安全视图上有以下代码:
<%= Datapuller.download_historical %>
这也让我可以看到从数组中加载的数据。
使用上面的代码,我可以使用表单为父 Security 创建一个子 Price,然后我可以从 yahoo Finance gem 进行调用。但是,数组不会为数组中的每一行创建价格记录。
我错过了什么?
谢谢!
【问题讨论】:
标签: ruby-on-rails arrays ruby nested-routes