2011-07-29 9 views
0

私は、ユーザーがテキストと画像を投稿できるシンプルなアプリを持っています。また、ユーザーが自分のお気に入りに投票できるように、thumbs_up gem (github repo)も使用しています。Arrayのための未定義のメソッドrank_tally(thumbs_up gemと投稿のランク付け)+

現在、テキストと画像の両方のアイテムを持つフィードを作成しようとしています。私は両方を1つの集約されたフィードにまとめ、注文し、ビューを動かすことができました。しかし、コントローラの@feedで "rank_tally"メソッドを使用すると、#Array: "0x1052befe8"エラーのために "未定義のメソッド` rank_tally 'が返されます。

rank_tallyは1つのモデルにのみ適用します(たとえば、@ aggregatedをposts.rank_tallyに変更した場合など)が、両方を組み合わせて作成している@集約された配列に問題があるようです。

私はこれをどのように修正することができますか?助けてくれてありがとう!

def feed 
    @user = User.find_by_cached_slug(params[:id]) 
    posts = Post.where("poster = ? and (postername is not null or name != ?)", @user.id, 'Guest') 
    images = Image.where("poster = ? and (postername is not null or name != ?)", @user.id, 'Guest') 
    @aggregated = (posts + images).rank_tally(
    {:at_least => 1, 
    :at_most => 10000, 
    :start_at => 1.weeks.ago, 
    :limit => 10, 
    }) 
    @feed = @aggregated.paginate(:page => params[:page]) 
    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @user } 
    end 
end 

答えて

0

(posts + images)の結果は配列であり、関係ではないため動作しません。これを試してください:

posts.merge(images).rank_tally(...) 
+0

あなたの答えに感謝!まだ動作していません:/私はimages.mergeに設定した場合、逆に、投稿のみが表示され、画像のみが表示されます – ahuang7

関連する問題