2013-04-22 47 views
1

我是在Ruby on Rails中开发的新手,我被困在一个小型项目中,我一直致力于更好地理解RoR。我正在尝试制作一个小天气网站,并且无法通过控制器将用户输入发送到模型,并让该模型使用发回正确的信息,以便我可以解析它,不会发生什么。到目前为止,我还没有能够将用户参数发送给控制器,以便发送正确的请求。这是我下面的代码:将RoR中的变量从html传递到model

hourly.html.erb:

<%= form_tag('/show') do %> 
     <%= label_tag(:location, "Enter in your city name:") %> 
     <%= text_field_tag(:location) %> 
    <br /> 
    <%= submit_tag "Check It Out!", class: 'btn btn-primary' %> 
<% end %> 

hourly_lookup_controller.rb:

class HourlyLookupController < ApplicationController 

    def show 
     @hourly_lookup = HourlyLookup.new(params[:location]) 
    end 
end 

hourly_lookup.rb:

class HourlyLookup 

    def fetch_weather 
     HTTParty.get("http://api.wunderground.com/api/api-key/hourly/q/CA/#{:location}.xml") 
    end 

    def initialize 
     weather_hash = fetch_weather 
     assign_values(weather_hash) 
    end 

    def assign_values(weather_hash) 

     more code.... 

    end 
end 

任何帮助或方向一些很好的例子或教程将不胜感激。由于

回答

1

如果你想给一个变量发送到HourlyLookup,你需要这样做:

class HourlyLookupController < ApplicationController 

    def show 
    @hourly_lookup = HourlyLookup.new(params[:location]) 
    @hourly_lookup.fetch_weather 
    end 
end 

class HourlyLookup 

    attr_reader :location 

    def initialize(location) 
    @location = location 
    end 

    def fetch_weather 
    response = HTTParty.get("http://api.wunderground.com/api/cdb75d07a23ad227/hourly/q/CA/#{location}.xml") 
    parse_response(response) 
    end 

    def parse_response(response) 
    #parse the things 
    end 
end 
+0

真棒它的作品!非常感谢您的快速和正确的回应! Rails目前非常酷,但有点混乱。再次感谢! – user2305753 2013-04-22 02:37:42