使用weather在我的城市页面上显示天气预报。
city_controller.rb
def show
@region = Region.find(params[:region_id])
@city = City.find(params[:id])
@weather_lookup = WeatherLookup.new
endweather_lookup.rb
class WeatherLookup
attr_accessor :temperature, :icon, :condition
def fetch_weather
HTTParty.get("http://api.wunderground.com/api/a8135a01b8230bfb/hourly10day/lang:NL/q/IT/#{@city.name}.xml")
end
def initialize
weather_hash = fetch_weather
end
def assign_values(weather_hash)
hourly_forecast_response = weather_hash.parsed_response['response']['hourly_forecast']['forecast'].first
self.temperature = hourly_forecast_response['temp']['metric']
self.condition = hourly_forecast_response['condition']
self.icon = hourly_forecast_response['icon_url']
end
def initialize
weather_hash = fetch_weather
assign_values(weather_hash)
end
endShow.html.haml(城市)
= @weather_lookup.temperature
= @weather_lookup.condition.downcase
= image_tag @weather_lookup.icon为了获取正确的天气预报,我认为我可以像在示例中那样将@ HTTParty.get变量放在`name地址中,但我得到了错误消息undefined method ` `name‘。
我在这里做错了什么?
发布于 2012-09-08 12:40:58
如果你需要WeatherLookup中的城市,你需要把它传递给初始化器。实例变量仅绑定到其各自的视图。
@weather_lookup = WeatherLookup.new(@city)attr_accessor :city # optional
def initialize(city)
@city = city
weather_hash = fetch_weather
endhttps://stackoverflow.com/questions/12325665
复制相似问题