2011-09-20 11 views
0

自分自身とあなたのフォローしているユーザーのステータスフィードを定義するHartltの本12.3.4の最後の練習に取り残されています。私はRails初心者ですので、追加情報を投稿する必要がある場合はお知らせください。hartlによるチュートリアル12.3.4 - 新しいステータスフィード

開発ログの末尾にwill_paginateがSQLを起動して最初のレコードを収集し、最初のページが表示されたときに正常に見えることがわかります。別のページに行くためにリンクをクリックすると、will_paginateはSQLを起動しないので、次のページが正常にサーバーに接続されているためデータベースからデータを取得できますが、データはありません。

開発ログには新しいエントリもなく、間違っているかもしれませんが、will_paginateがデータベースにヒットしなかったと思います。

以下の関連するすべてのコードスニペットを含めることを試みました。行方不明のものを喜んで送ってください。ビデオチュートリアル(:ここ

は、ここに私のuser.rbここ

def feed 
    Micropost.from_users_followed_by(self) 
end 

は私microposts.rbが

scope :from_users_followed_by, lambda { |user| followed_by(user) } 

private 

def self.followed_by(user) 
    following_ids = %(SELECT followed_id FROM relationships 
        WHERE follower_id = :user_id) 
    where("user_id IN (#{following_ids}) OR user_id = :user_id", 
     :user_id => user) 
end 

注記されている私のpages_controller.rb

def home 
    @title = "Home" 
    if signed_in? 
    @micropost = Micropost.new 
    @feed_items = current_user.feed.paginate(:page => params[:page]) 
    end 
end 

です12章、時間= 02:06:00)と本(517ページ、12.44ページ)Harltは、 "following_id"の代わりに "follows_ids"という変数を使用しています「s」。バージンサンプルコードでは、彼のサイトから変数名が "following_ids"であることをダウンロードすることができますが、私はそれを両方の方法で試しましたが、失敗します。

ボトムライン - devログには最初のデータバッチを取得するwill_paginateが表示されますが、追加のデータはデータベースに戻されません。

誰も私の問題を解決するために見てみることができるものを提案することはできますか?

多くのありがとうございます。

答えて

0

1ページに収まる以上の記録がありますか?

そうでなければ、will_paginateが最初にカウントしている可能性があります。 その後、レコードをロードしないことを決定します。

コンソールに入り、試してみてください。

また
$ rails console 

user = User.find(23) 
# the same user you're logged in as 

user.feed.count 
# is it more than one page? 

user.feed.paginate(:page => 1) 
# 20 records? 

user.feed.paginate(:page => 2) 
# nothing? 


:あなたの例では

scope :from_users_followed_by, lambda { |user| followed_by(user) }が冗長です。

def feed 
    Micropost.followed_by(self) 
end 
関連する問題