Ruby:将哈希与哈希值比较麻烦

时间:2012-09-10 15:06:37

标签: ruby-on-rails ruby

我有“鬼看起来”代码的这一部分(但它必须是,因为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'。正如我想的那样,通过我以糟糕的方式比较哈希和哈希......我怎么能这样做?

2 个答案:

答案 0 :(得分: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是一个数组,而不是一个可以调用该方法的对象。

答案 1 :(得分:0)

@search_results是一个数组。如果你知道它只返回一个结果,你可以执行@search_results [0] .Tex_Id,否则必须遍历@search_results的每个值。

尝试'pry'gem来调试你从每个作业得到的结果。