2012-04-21 3 views
0

は、今私は、このようなコントローラのメソッドがあります。railsコントローラでの選択方法は?

 def modelv 
    @model = Model.find(:all, :conditions => { :MOD_MFA_ID => params[:man]}) 
    @ct = CountryDesignation.find(:all, :conditions => { :CDS_ID => "110000002"}) 
    @destext = DesText.find(:all, :conditions => { :TEX_ID => "388555"}) 
    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @model } 
    end 
    end 

を私はそれがこのようになっていることを望む:

def modelv 
    @model = Model.find(:all, :conditions => { :MOD_MFA_ID => params[:man]}) 
    @ct = CountryDesignation.find(:all, :conditions => { :CDS_ID => @model.MOD_CDS_ID}) 
    @destext = DesText.find(:all, :conditions => { :TEX_ID => @ct.CDS_TEX_ID}) 
    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @model } 
    end 
    end 

しかし、私のモデル構造があること:

COUNTRY_DESIGNATIONSのhas_manyのモデル

DES_TEXTS has_many COUNTRY_DESIGNATIONS

製造元はhas_manyモデル

@modelを選択した場合は@modelを選択し、@ctを選択すると、@destextを選択すると配列になります(すべてのモデル用)。これを正しく選択する方法。これを表示する方法は?今、私の見解は次のようになります。

%p#notice= notice 

%h3 
    - @model.each do |model| 
    %tr 
     %p 
     mod_id 
     %td= model.MOD_ID 
     name 
     -#%td= model.country_designations.des_texts.TEX_TEXT 
     = link_to 'Show model', model 
= link_to 'Back', manufacturers_path 

そして、私はこのように見えるように習慣:DES_TEXTS belongs_toのCOUNTRY_DESIGNATIONSとCOUNTRY_DESIGNATIONS belongs_toのモデルは、その後発見が唯一の結果を返す必要がある場合は

%p#notice= notice 

%h3 
    - @model.each do |model| 
    %tr 
     %p 
     mod_id 
     %td= model.MOD_ID 
     name 
     %td= @destext.TEX_TEXT 
     = link_to 'Show model', model 

= link_to 'Back', manufacturers_path 

答えて

0

。その後、あなたは見つける必要はありません(:all、...)、あなたは必要です

@model = Model.find(:first, :conditions => { :MOD_MFA_ID => params[:man]}) 
@ct = CountryDesignation.find(:first, :conditions => { :CDS_ID => "110000002"}) 
@destext = DesText.find(:first, :conditions => { :TEX_ID => "388555"}) 
+0

"110000002"しかし私はフィールドが必要です!そして私がモデルを選んだとき、それは多くです!その配列! – byCoder

+0

最初のモデルはメーカーに属しています! – byCoder

+0

多くのものが必要な場合は、all:を探しますが、多くのものが戻ってくるので、配列でなければなりません。検索結果から返されたものがたくさんある場合は、それらの結果の配列を処理する必要があります。どのように他のことができますか? –

関連する問題