我被困在 Hartlt book 12.3.4 中的最后一个练习中,您可以在其中为自己和您关注的用户定义状态提要。我是 Rails 新手,所以如果我需要发布更多信息,请告诉我。
当我跟踪开发日志时,我可以看到 will_paginate 触发 SQL 以收集初始记录,并且初始页面在提供时看起来很好。当我单击链接转到任何其他页面时,似乎 will_paginate 不会触发 SQL 以从数据库中检索更多数据,因为下一页服务器正常,但没有数据。
开发日志中也没有新条目,也许我错了,但我认为这表明 will_paginate 没有命中数据库。
我试图在下面包含所有相关的代码片段。很高兴发送任何丢失的东西。
这是我的 pages_controller.rb
def home
@title = "Home"
if signed_in?
@micropost = Micropost.new
@feed_items = current_user.feed.paginate(:page => params[:page])
end
end
这是我的 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
注意:在视频教程(第 12 章,时间 = 02:06:00)和书(第 517 页,清单 12.44)中,Harlt 使用变量“followed_ids”而不是“following_ids”。在您可以从他的网站下载的原始示例代码中,变量名称是“following_ids”,我已经尝试过两种方式 - 但它失败了。
底线 - 开发日志显示 will_paginate 检索第一批数据,但它永远不会返回数据库以获取其他数据。
谁能建议我可以看看什么来解决我的问题?
非常感谢。