我对rails很新(< 1个月),并决定构建一个天气应用程序来让我的脚湿透。 我正在使用HTTParty根据邮政编码获取Weather Underground Feed,并将通过它传递天气信息......
用户在主页上输入邮政编码,邮政编码通过URL传递,因此HTTParty可以提供相应的XML文件。
我不能为我的生活获取愚蠢的邮政编码,使其回到HTTParty正在做的事情的模型。
我已经调试过了:
http://localhost:3000/12345
确实会通过一个参数 - 我把它路由到哪里?zip = 12345变成了各种各样的永久链接:调试转储确实显示:
zip: '37064'
所以我知道邮政编码至少在那里。但是,我需要能够获取该参数并将其传递给包含HTTParty get请求的模型。
以下是基础知识:
(值得一提的是:“37064”将被替换为通过URL传递的邮政编码...它只是用于测试目的)
显然我想用此做更多,但这是起点。
这是正确的方法(“轨道方式”)吗?
a)如果是这样,我如何获取查询字符串来更新模型,以便我可以获得正确的XML提要?
b)如果没有,那么“正确”的做法是什么,我至少可以指向正确的方向吗?
我是一个WordPress-Dev-Turned-Rails-Dev,所以我很喜欢这方面的任何反馈。
答案 0 :(得分:1)
模型不应该关注视图,查询字符串等等。他们的工作是管理数据。但是,管理查询字符串是控制器的工作。
class WeatherController < ApplicationController
def weather
# extract zip code from query string and pass to the model
@weather_lookup = FetchWeather.new params[:zip]
end
end
class FetchWeather < ActiveRecord::Base
attr_accessor :temperature, :condition, :zip
def initialize zip
# snip
self.zip = zip
end
def fetch_weather
HTTParty.get("http://api.wunderground.com/api/0299ecb9aa94e332/hourly/q/" + zip + ".xml")
end
end