2013-04-05 86 views
0

我有三个表说店,项目和item_type如何获得包含条件的值?

店铺包含商店的名称和项目包含每个商店的项目和item_type包含该项目的不同类型以及状态,如可用或不可用。

现在我想呈现

format.json { render json: {:shop => @shops.as_json(:include => :items)}} 

但根据条件,说与item_type_id = '1' 和item_type_status的状态= '可用'

回答

1

项目试试这个:

@shops = Shop.includes(:items).where("items.itemp_type = ?", 'accesories') 
format.json { render json: { :shop => @shops.as_json(:include => :items) } } 

编辑:

一你可以这样做的方法是用你想渲染的对象创建一个散列,然后把它传递给渲染方法。像这样:

respond_to do |format| 
    format.json { render :json => {:shops => @shops, 
            :items => @items }} 
end 

如果模型没有通过活动记录关联,那可能是您的最佳解决方案。

如果联想确实存在,你可以传递一个:包括参数的渲染调用,就像这样:

respond_to do |format| 
    format.json { render :json => @shops.to_json(:include => [:items])} 
end 

请注意,你不会有检索@items变量在上面,如果节你采取这种方法,Rails会自动从@shops变量中加载它。

+0

好吧怎么样把item_type的状态包括进去呢? – logesh 2013-04-05 09:02:23

+0

看到我编辑的答案。 – 2013-04-05 09:07:07

+0

不要忘记接受答案。 – 2013-04-05 10:36:10

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"}