我有三个表说shop,item和item_type
商店包含商店名称,商品包含每个商店的商品,item_type包含不同类型的商品以及可用或不可用的状态。
现在我要渲染
format.json { render json: {:shop => @shops.as_json(:include => :items)}}
但根据条件,请说出item_type_id ='1'的项目以及item_type_status ='available'的状态
答案 0 :(得分:1)
试试这个:
@shops = Shop.includes(:items).where("items.itemp_type = ?", 'accesories')
format.json { render json: { :shop => @shops.as_json(:include => :items) } }
<强>编辑:强>
您可以这样做的一种方法是使用要渲染的对象创建哈希,然后将其传递给render方法。像这样:
respond_to do |format|
format.json { render :json => {:shops => @shops,
:items => @items }}
end
如果模型没有通过活动记录关联,那可能是您的最佳解决方案。
如果存在关联,则可以将:include参数传递给render调用,如下所示:
respond_to do |format|
format.json { render :json => @shops.to_json(:include => [:items])}
end
请注意,如果采用这种方法,您不必在上面的部分中检索@items变量,Rails会自动从@shops变量加载它。
答案 1 :(得分:0)
您可以将方法或方法传递给to_json或as_json方法,并包含所需的记录。 Rails api中的示例:
user.as_json(:methods => :permalink)
# => {"id": 1, "name": "Konata Izumi", "age": 16,
"created_at": "2006/08/01", "awesome": true,
"permalink": "1-konata-izumi"}