コントローラーでこれを使用して、別のテーブルからのデータであるすべてのモデルを選択しました。
def modelv
@model = Model.find(:all, :conditions => { :MOD_MFA_ID => params[:man]})
@ct1 = CountryDesignation.all(:conditions => { :CDS_ID => @model.map(&:MOD_CDS_ID)})
@ct = @ct1.uniq{|hh| hh.CDS_ID}
@destext = DesText.find(:all, :conditions => { :TEX_ID => @ct.map(&:CDS_TEX_ID)})
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @model }
end
end
汚いコードでごめんなさい。
と私の見解
%table %tr
%th Mfa id
%th Год начала выпуска
%th Год завершения выпуска
- @model.each do |model|
%tr
%td= model.MOD_CDS_ID
%td= link_to model.MOD_ID, model
%td= link_to model.MOD_PCON_START, model
-if model.MOD_PCON_END.blank?
%td= link_to "По настоящее время", model
-else
%td= link_to model.MOD_PCON_END, model
-#%td= model.country_designations.des_texts.TEX_TEXT
-#= link_to 'Show model', model %br %table %tr
- @destext.each do |t|
%tr
%td= t.TEX_ID
%td= t.TEX_TEXT
- @ct.each do |ct|
%tr
%td= ct.CDS_ID
%td= ct.CDS_TEX_ID
しかし、すべてのモデルの t.TEX_TEXT と ct.CDS_TEX_ID を別のループではなく、同じテーブルの列に表示するにはどうすればよいでしょうか? さらに、私のメソッドはデータをフェッチしていますが、データを選択すると、ct.CDS_TEX_ID が複数のエントリで同じ場合、@destext がグループ化され、たとえば 1 つのインスタンスのみをフェッチします。
cds_id cds_tex_id
110007626 420077
110007627 420077
その結果、@destext から 1 行だけ取得します。お願い助けて。それは非標準のデータベースです
テーブルMODELSにはフィールドMOD_CDS_IDがあり、このフィールドでテーブルCOUNTRY_DESIGNATIONSに移動し、フィールドCDS_ID = MOD_CDS_ID(MODELSテーブルから)です。このテーブルからフィールドCDS_TEX_IDを選択し、このIDでテーブルDES_TEXTSに移動します。フィールドTEX_IDは等しくなければなりません前のテーブル CDS_TEX_ID から、フィールド TEX_TEXT を取得します !!! そして、私のイテレーション @model.each のこのフィールドは....すべてのモデルに対して表示する必要があります