NewsAPIを使ったオリジナルニュースサイトを実装しています。一通り見た目は完成しているのですが、時たまなぜか「ArgumentError Nil location provided. Can’t build URI」になり、image_tagの画像データがnilになってしまいます。時間が経てば元どおりにブラウザ表示できるのですが、時々このようなことが起きてしまいます。
仮説としてJSONのデータが常時うまく引数に渡されないのが原因だと思っていますが、詳細が分からずにいます。調べていますが、類似したケースがなかなか見つからずに困っています。
これでは、ニュースサイトとしては未成熟となってしまいますので、正式なコードを記述したいと思っています。
APIのデータを常時保存共有して、画像を表示できるようするにはどのようにコードを記述したらいいでしょうか?恐縮ですが、どなたかご存知でしたらご教授願えますでしょうか?下記はエラー文とコードになります。
コード ArgumentError in News#index Showing /Users/hiromu/original/app/views/news/index.html.erb where line #26 raised: Extracted source (around line #26): 24 25 26 27 28 29 </div> <div class="image"> <%= image_tag article["urlToImage"],:size =>'240x160' %> </div> <div class="content"> <%= article["description"] %>
app/controllers/news_controller.rb class NewsController < ApplicationController require "open-uri" def index news_api_key = ENV["NEWS_API_KEY"] uri = "http://newsapi.org/v2/top-headlines?country=jp&apiKey=#{news_api_key}" article_serialized = open(uri).read @articles = JSON.parse(article_serialized) end end
app/views/news/index.html.erb <main class="main"> <div class="inner"> <% if user_signed_in? %> <div class="greeting"> <%= link_to current_user.name, class: :greeting__link%> </div> <% end %> </div> <header> <p class="font">Powered by <a href="https://newsapi.org", class="btn">News API</a></p> </header> <div class="articles"> <% @articles["articles"].each do |article| %> <div class="article"> <div class="title"> <%= link_to article["title"], article["url"] %> </div> <div class="wrapper"> <div class="date"> <%= article["publishedAt"] %> </div> <div class="source"> <%= article["source"]["name"]%> </div> <div class="image"> <%= image_tag article["urlToImage"],:size =>'240x160' %> #この部分になります。 </div> <div class="content"> <%= article["description"] %> </div > </div> </div> <% end %> </div> </main>
回答1件
あなたの回答
tips
プレビュー