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'。私が思うに、それは私がハッシュとハッシュを悪い方法で比較することによってです...どうすればこれを行うことができますか?

4

2 に答える 2

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は、が配列であり、そのメソッドを呼び出すことができるオブジェクトではないためです。

于 2012-09-10T16:36:38.093 に答える
0

@search_results は配列です。結果が 1 つだけ返されることがわかっている場合は、@search_results[0].Tex_Id を実行できます。それ以外の場合は、@search_results の値ごとにループする必要があります。

「pry」ジェムを試して、各割り当てから得られる結果をデバッグしてください。

于 2012-09-10T17:51:44.080 に答える