新手问题 controller json 数据重构

xiaoxiao · 2013年06月03日 · 最后由 xiaoxiao 回复于 2013年06月03日 · 1910 次阅读

我的数据库有两张表,一张是元件表(component),里面有字段 name,price。一张是供应商表(supplier),里面有字段 company,phone,address。他们的关系式一对多的关系,一个元件可能有多个供应商,我现在想在 controller 中传回 json 数据给 view。我的做法如下:

@components=Component.all
respond_to do |format|
format.json { 
render json: { :data=>@components.collect{ |list|  :name=>list.name, :company=>list.suppliers }
}
}
end

这里就有一个问题了,list.suppliers 传回的是一个对象,我想传回的是供应商的名字,怎么处理 list.suppliers,得到结果如果只有一个供应商,:company=>'xx', 如果有两个供应商 :company=>'xx, yy'其中 xx yy 都是供应商表中 company 的值

我想法是弄一个变量来存这个供应商名字 value=‘’ list.suppliers.each do |s| value+=s.company value+=',' end 这样就整合到了需要的格式了 但是怎么将两者结合,或者各位有更好的办法求指教

写个 helper,调用下

@xiaoxiao

:company => list.suppliers.collect(&:company).join(',')

高手呀,我整了好几天,你一条语句就整好了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号