質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1884閲覧

News-Apiを使ってニュースを保存したいがNoMethodErrorが出る

yamada_yuuki

総合スコア100

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/08/15 06:00

編集2020/08/15 09:05

News-api (https://newsapi.org/)を使ってニュースを取得して保存したいが保存するときに
NoMethodError: undefined method `each' for nil:NilClassが出てしまいます。なにかわかる方回答お願いします。参考
https://note.com/hikkymouse_pro/n/nfccc6cc6cf8d

rails db:seed rails aborted! NoMethodError: undefined method `each' for nil:NilClass C:/Users/user/Desktop/home/db/seeds.rb:13:in `<top (required)>' ...

seedrb

1uri1 = URI.parse("http://newsapi.org/v2/top-headlines?country=jp&apiKey=自分のAPI") 2json1= Net::HTTP.get(uri1) 3publishers_to_rb = JSON.parse(json1) 4publishers = publishers_to_rb["sources"] 5publishers.each do |data| 6 Publisher.create(author: data['author'], description: data['description'], title:data['title'], url:data['url'], urlToImage:data['urlToImage'], publishedAt:data['publishedAt'],content:data['content']) 7end 8
create_table :publishers do |t| t.string :author t.string :title t.text :description t.string :url t.string :urlToImage t.string :publishedAt t.text :content t.timestamps end

初めて使う技術なのでわからないことが多いです。他に記載しなければならないことがあればコメントお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gouf

2020/08/15 08:22

ドキュメントは参照済みですか? : https://newsapi.org/docs/endpoints/sources あるいは、top-headlines について問い合わせたいのか、sources なのか、どちらでしょうか? コードの記述が非統一になってます
yamada_yuuki

2020/08/15 08:27

コメントありがとうございます。ドキュメントは見ましたがどうしていいか分からなかったので参考にはしてません。 top-headlinesの方に問い合わせたいです。
gouf

2020/08/15 13:14

top-headlines の場合、ドキュメントは次のページを参照してください : https://newsapi.org/docs/endpoints/top-headlines ドキュメントの記述では、問い合わせ結果の "本題" 部分は articles に入っているようです JSON の結果を参照する際、「json['articles']」のように参照すると、中身が見られるのではないでしょうか
guest

回答1

0

ベストアンサー

gem などは利用していますが; すっぴんの Ruby で動くコードを書いてみました

ruby

1require 'uri' 2require 'net/http' 3require 'json' 4require 'dotenv' 5 6Dotenv.load 7 8END_POINT = 'https://newsapi.org/v2'.freeze 9REQUEST_URL = "#{END_POINT}/top-headlines?sources=bbc-news&apiKey=#{ENV['NEWS_API_KEY']}".freeze 10 11json = 12 URI.parse(REQUEST_URL) 13 .then { |uri| Net::HTTP.get(uri) } 14 .then { |response| JSON.parse!(response) } 15pp json # リクエスト結果の状態コードを含む、JSON の中身が出力される 16# => [{"source"=>{"id"=>"bbc-news", "name"=>"BBC News"}, 17# "author"=>"BBC News", 18# "title"=>"Australia surfer saves..", ...}, {...} ...] 19pp json['articles'] # 記事に絞った情報が出力される 20

詳しくは News API のドキュメントを参照してみてください

なにか参考になれば幸いです

Link

投稿2020/08/15 13:23

gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamada_yuuki

2020/08/16 01:48

ありがとうございます。参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問