我在rails app中有一个has_many关系。我的关联如下:
class Car < ActiveRecord::Base
has_many :car_fuel_types
has_many :fuel_types , through: :car_fuel_types
end
class FuelType < ActiveRecord::Base
has_many :car_fuel_types
has_many :cars , through: :car_fuel_types
end
class CarFuelType < ActiveRecord::Base
belongs_to :fuel_type
belongs_to :car
end
在我的cars_controller中,我想让所有汽车都拥有特定的fuel_type,所以我在我的cars_controller索引动作中编写以下逻辑
def index
@cars = FuelType.find(params[:fuel_type_id]).cars
end
我正在使用此curl命令来测试结果
curl -i -H "Accept: application/json" -H "Content-type: application/json" -X GET http://localhost:3000/cars.json\?fuel_type_id\=2
所以这给了我带有所选燃料类型的汽车列表。
现在我想将“car”添加到我正在获得的json响应中, 在尝试这样做时,我遇到了active_model_serializers gem并且读到我必须在我的控制器索引aciton中添加渲染块
所以我的新控制器看起来像:
def index
@cars = FuelType.find(params[:fuel_type_id]).cars
respond_to do |format|
format.html
format.json { render json: @cars }
end
end
母鸡我这样做并尝试相同的curl命令,它在渲染json:cars line中给我错误。
我得到的错误是:
NoMethodError - undefined method `fuel_type_id' for #<Car:0x007f36ff104a18>:
任何人都可以告诉我应该怎么做才能在响应中获得根元素吗?