将实例变量传递到rails中的API

时间:2013-04-21 21:52:29

标签: ruby-on-rails api instance-variables

我正在尝试传递一些实例变量来调用具有该特定对象属性的API。用户填写他们创建商品对象的汽车详细信息(品牌,型号和年份)。这应该被传递到Edmund的API中以检索该车的信息。如果我使用特定的品牌/型号/年设置它,但代码工作正常,但我无法让它返回创建的商品对象的信息。

这是我的控制器:

def show
@offer = Offer.find(params[:id])
@wanted_ad = WantedAd.find(params[:wanted_ad_id])
@make = @offer.ownermake
@model = @offer.ownermodel
@year = @offer.owneryear

respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @offer }
end
end

这是我的模特:

class Offer < ActiveRecord::Base
    attr_accessible :user_id, :wanted_ad_id, :estvalue, :image1, :offerprice, :ownercartype, :ownerdesc, :ownermake, :ownermileage, :ownermodel, :owneryear
    belongs_to :user
    belongs_to :wanted_ad
    has_one :car

    def self.carsearch
        @car = []


        carinfo = HTTParty.get("http://api.edmunds.com/v1/api/vehicle/#{make}/#{model}/#{year}?api_key=qd4n48eua7r2e59hbdte5xd6&fmt=json")
        carinfo["modelYearHolder"].each do |p|
            c = Car.new
            c.make = p["makeName"]


            return carinfo
    end 
    end
end

我的车模很简单:

class Car < ActiveRecord::Base   
  attr_accessible :make, :model, :year 

  belongs_to :offer  
end

我正在尝试使用<%= Offer.carsearch %>从视图文件中调用它。我可能有各种各样的搞砸但这是我第一次使用API​​而且我很丢失。

1 个答案:

答案 0 :(得分:0)

我认为您在carsearch方法中遇到了几个逻辑错误: 您正在获取carinfo,遍历数组,实例化一辆新车,但c对象没有任何反应,并且在第一次迭代结束时退出整个函数,返回检索到的carinfo ..

这可能是你的意思吗?

def carsearch
    @cars = []

    # where do `make`, `model` and `year` come from here?
    # probably method parameters!?
    carinfo = HTTParty.get("http://api.edmunds.com/v1/api/vehicle/#{make}/#{model}/#{year}?api_key=qd4n48eua7r2e59hbdte5xd6&fmt=json")
    carinfo["modelYearHolder"].each do |p|
        c = Car.new
        c.make = p["makeName"]
        # initialize other attributes (year, model)?
        @cars << c
    end


    return @cars
end