Jqgrid和belongs_to的关系

时间:2010-10-18 19:18:26

标签: ruby-on-rails jqgrid

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

示例:

Vehicle属于Person

我可以显示列出person_id的Vehicle jqgrid,但我想显示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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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