2010-10-18 65 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

相關問題