将RoR中的变量从html传递到模型

时间:2013-04-22 02:24:30

标签: ruby-on-rails ruby

我刚开始使用Ruby on Rails进行开发,而且我一直坚持一个小项目,我一直在努力更好地理解RoR。我试图创建一个小天气网站,我无法通过控制器将用户输入发送到模型,并让该模型使用发回正确的信息,以便我可以解析它,什么不是。到目前为止,我还没有将用户参数发送到控制器,以便它发出正确的请求。这是我的以下代码:

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 个答案:

答案 0 :(得分: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