2010-10-18 40 views
1

是否可以在单个jqgrid中显示belongs_to关系?Jqgrid与belongs_to的关系

例子:

Vehicle属于Person

我可以显示Vehicle jqGrid的上市为person_id,但我想,以显示Person的名称,而不是他们的ID。

实施例:

person_id|vehicle_type 
    1 | honda 


person_name|vehicle_type 
    Tom | honda 

EDIT(车辆控制器代码):

class VehiclesController < ApplicationController 

    def index 
    @vehicles = Vehicle.find(:all) { 
     if params[:page].present? then 
     paginate :page => params[:page], :per_page => params[:rows] 
     order_by "#{params[:sidx]} #{params[:sord]}" 
     end 
    } 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @vehicles } 
     format.json { render :json => @vehicles } 
     format.jgrid { 
     render :json => @vehicles.to_jqgrid_json(
      [:person_id, :vehicle_type], 
      params[:page], 
      params[:rows], 
      @vehicles.total_entries 
     ) 
     } 
    end 
    end 
end 
+0

这个问题是**纯ruby-on-rails **问题。如果您只使用SQL,解决方案将包括一个额外的JOIN到'Person'表。没有jqGrid的知识帮助我给你一个更好的建议。 – Oleg 2010-10-18 19:28:33

回答

2

我在没有修改查询的情况下找到了解决方案。在属性中,使用“person.name”将使用属于车辆的Person的名称。

render :json => @vehicles.to_jqgrid_json(
      ["person.name", :vehicle_type], 
      params[:page], 
      params[:rows], 
      @vehicles.total_entries 
     ) 
0

需要通过加入表一起(表达这种关系的服务器端,例如虽然IIRC有在Rails中是更优雅的方式):

SELECT p.person_name, v.vehicle_type 
     FROM vehicle v 
INNER JOIN person p ON p.person_id = v.person_id 

然后只要确保在您的jqgrid的colmodel中包含person_name

相关问题