2012-04-21 2 views
0

Теперь у меня есть такой метод контроллера:Как выбрать контроллер рельсов?

 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 - это массив, если выбрать @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 

И я не буду выглядеть следующим образом:

%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

Если MODELS BELONGS_TO COUNTRY_DESIGNATIONS и COUNTRY_DESIGNATIONS BELONGS_TO DES_TEXTS тогда находка должна возвращать только один результат. Тогда вам не нужно найти (: все, ...), вам нужно

@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

Если вам нужно много, то найдите: все, но так как вы получите много назад, это должен быть массив. Если из поиска найдено много, вам нужно иметь дело с массивом этих результатов. Как еще это могло сработать? –

Смежные вопросы