Я пытаюсь создать приложение, которое возвращает URL-адрес gif в зависимости от текущей погоды в местоположении.Я использую API открытых погодных условий и храню свои URL-адреса в хэше в модуле и создаю метод, который выбирает URL-адрес gif на основе кода погоды, возвращенного из вызова API.Например, код 321 соответствует «слабому дождю», и затем должен быть возвращен gif, изображающий небольшой дождь.
Когда я запускаю свой код, я получаю ошибку аргумента Nil location provided. Can't build URI
Я не уверен, что яправильный доступ к вспомогательному методу.Вызов API работает нормально, и я могу вернуть @weather_code
на мой взгляд без проблем.Есть идеи, что вызывает это?Вот мой код:
reports_helper.rb
module ForecastsHelper
GIFS = {
thunder:
{codes: [200, 201, 202, 210, 211, 212, 221, 230, 231, 232],
urls: %w(
https://media.giphy.com/media/26uf5HjasTtxtNCqQ/giphy.gif
https://media.giphy.com/media/vS09bj1KrXwje/giphy.gif
https://media.giphy.com/media/2pUAUd0cFntny/giphy.gif
)},
light_rain:
{codes: [300, 301, 302, 310, 311, 312, 313, 314, 321, 500, 501, 520, 521],
urls: %w(
https://media.giphy.com/media/xT9GEz2CeU9uaI2KZi/giphy.gif
https://media.giphy.com/media/k28n1OPefBEeQ/giphy.gif
https://media.giphy.com/media/H1eu9Vw957Rfi/giphy.gif
)},
heavy_rain:
{codes: [502, 503, 504, 522, 531, 511],
urls: %w(
https://media.giphy.com/media/1Yfxps0AHRYBR2tK2G/giphy.gif
https://media.giphy.com/media/hk6czgfmwVJS0/giphy.gif
https://media.giphy.com/media/26BGD4XaoPO3zTz9K/giphy.gif
)}
}
def find_gif_url
GIFS.each do |key, value|
if value[:codes].include? @weather_code
value[:urls].sample
end
end
end
end
reports_controller.rb
class ForecastsController < ApplicationController
def current_weather
@token = Rails.application.credentials.openweather_key
@city = params[:q]
if @city.nil?
@forecast = {}
else
@forecast = OpenWeatherApi.new(@city, @token).my_location_forecast
end
@temperature = @forecast.dig('main', 'temp').to_i - 273
@weather_code = @forecast.dig('weather', 0, 'id').to_i
end
end
current_weather.html.erb
<%= form_tag(current_weather_forecasts_path, method: :get) do %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %><br>
<%= image_tag(find_gif_url, class: "gif") %>