1

私は次のbefore_save方法を持っています:

def get_data
  url = "http://www.api-fetching-url.com/where_my_data_input_is=#{self.my_data}&output=json"
  new_data = HTTParty.get(url)
  @field_to_update = new_data['one']['two']['here']
  self.field_to_update = @field_to_update
end

残念ながら、self.my_dataJSON url は結果を生成しないため、機能していないようです。しかし、my_dataハードコードされた方法で置き換えると、問題なく動作します。さらに、findRails コンソールで a を実行して、my_dataフィールドを問題なく取得できます。したがって、そのフィールドが保存されないことや、フォーム側の問題ではありません。

この方法でメソッドにデータを挿入する際に問題はありbefore_saveますか? そうでない場合、私が見逃しているこれを行う別の方法はありますか?

4

1 に答える 1

0

いくつかのコメント:

  • self常にレシーバーでメソッドを呼び出す必要はありません (実際にはできません) 。たとえば、プライベート メソッドは明示的な受信者なしでのみ呼び出すことができるため、プライベート メソッドは呼び出しできませんself....
  • URLを調べて、それが正しいかどうかを確認してみませんか? URLを割り当てた行の後に追加puts urlし、プログラムを実行して出力を確認してください。URLは正しいですか?
  • HTTParty を正しく使用していないHTTParty.get('...')可能性があります。応答オブジェクトを返し、おそらく応答の本文を適切に解析する必要があります。

JSON サービスの例:

url      = 'http://service.com/path/to/resource.json'
response = HTTParty.get url

data = JSON.parse(response.body)
# now you can use the data, e.g.
# bla = data['one']['foo']
于 2012-11-12T10:29:45.430 に答える