0

次のインスタンス変数に格納されたフィールドのハッシュがあります。

 @series_from_fred

このハッシュをに渡すと

 Serial.create(@series_from_fred) 

新しいシリアル (モデル名) の「行」が作成され、ハッシュ マップ内のパラメーターがシリアル モデルの行のフィールドにマップされます。

ただし、既存のシリアルを更新しようとすると

 serial.update_attributes(@series_from_fred)

「シリアル」は

 @serial.each do |serial|

次のエラーが表示されます。

NoMethodError in AdminsController#checkSerials

undefined method `stringify_keys' for #<Array:0x007fd1fe3085e0>

何か案は?

これは、Rails コンソールに移動して「Serial」と入力するとどうなるかです

Serial(id: integer, series_name: string, realtime_start: string, 
realtime_end: string, title: string, observation_start: string, 
observation_end: string, frequency: string, frequency_short: string, 
units: string, units_short: string, seasonal_adjustment: string, 
seasonal_adjustment_short: string, last_updated: string, popularity: string, 
notes: text, created_at: datetime, updated_at: datetime)

実行時に API からデータを取得しているので、Rails コンソールに移動して「@series_from_fred」と入力すると、「nil」が返されます。ただし、 logger.info(@series_from_fred.to_s) を使用すると、ターミナル出力で @series_from_fred の値を「見る」ことができます。その出力は次のとおりです。

[{"realtime_start"=>"2013-02-28", "realtime_end"=>"2013-02-28", 
"title"=>"Reserve Bank Credit - Securities Held Outright", 
"observation_start"=>"1989-03-22", "observation_end"=>"2013-02-20", 
"frequency"=>"Weekly, Ending Wednesday", "frequency_short"=>"W", 
"units"=>"Billions of Dollars", "units_short"=>"Bil. of $", 
"seasonal_adjustment"=>"Not Seasonally Adjusted", "seasonal_adjustment_short"=>"NSA", 
"last_updated"=>"2013-02-22 08:32:54-06", "popularity"=>"47", "notes"=>"The amount of 
securities held by Federal Reserve Banks. This quantity is the cumulative result of 
permanent open market operations: outright purchases or sales of securities, conducted 
by the Federal Reserve. Section 14 of the Federal Reserve Act defines the securities 
that the Federal Reserve is authorized to buy and sell.", "series_name"=>"WSECOUT"}] 
4

1 に答える 1

0

理由はわかりませんが

Serial.create(@series_from_fred) worked 

serial.update_attributes(@series_from_fred) 

動作しません。問題を「修正」するために私がしたことは、APIから取得していたxmlを次の方法でハッシュに変換することでした:

@series_from_fred = Hash.from_xml(series_responseHolder)

これを次の場所に渡します。

serial.update_attributes(@series_from_fred)

Serial モデルのそのレコード/オブジェクト/行のパラメーターを正常に更新しました。

于 2013-02-28T22:58:47.340 に答える