2012-09-10 72 views
0

我有這樣的一部分「鬼像」的代碼(但它因此必須是,因爲DB是巨大的,有許多表):紅寶石:比較哈希散列值麻煩

def search_group 
    @search_trees = SearchTree.all 
    @designation = Designation.find(:all, :conditions => { :DES_ID => @search_trees.map(&:STR_DES_ID)}) 
    @text = DesText.find(:all, :conditions => { :TEX_ID => @designation.map(&:DES_TEX_ID)}) 
    @search_result = @text.find_all{|item| item.TEX_TEXT.include?(params[:search_group_text])} 
    @designation_back = @designation.find_all{|item| item.DES_TEX_ID == @search_result.TEX_ID} 
    @search_trees_back = @search_trees.find_all{|item| item.STR_DES_ID == @designation_back.DES_ID} 
    respond_to do |format| 
     format.html 
    end 
    end 

我嘗試比較

@designation_back = @designation.find_all{|item| item.DES_TEX_ID == @search_result.TEX_ID} 

,但我得到的錯誤,壞事...未定義的方法`TEX_ID」。正如我所想,它是通過我比較哈希和哈希壞方式...我怎麼能做到這一點?

+0

嘗試方法名稱的小寫字母。例如item.des_tex_id –

+0

@IuriG。由於數據庫是巨大的,有很多表,也是非標準分貝!字段是可以的 – brabertaser19

+0

你試過'@ search_result.tex_id'上的小寫方法嗎? – iconoclast

回答

0
@search_result = @text.find_all{|item| item.TEX_TEXT.include?(params[:search_group_text])} 
    @designation_back = @designation.find_all{|item| item.DES_TEX_ID == @search_result.TEX_ID} 

這是因爲@search_result是一個數組,而不是一個對象,你可以調用該方法。

+0

謝謝,CO,但是如何解決呢? – brabertaser19

+0

這是一個數組! ARRAY?得到它了?對象列表。我不能告訴你如何處理它,這是你的商業邏輯! – phoet

+0

怎麼比較呢! – brabertaser19

0

@search_results是一個數組。如果您知道它僅返回一個結果,則可以執行@search_results [0] .Tex_Id,否則必須遍歷@search_results的每個值。

嘗試'撬'寶石來調試你從每個任務中得到的結果。