0

我正在开发一个网站。我想显示所有用户的所有帖子。但我收到以下错误消息:

nil:NilClass 的未定义方法 `each' 提取的源代码(在第 3 行附近):

\app\view\static_pages\home.html.erb:

   <div class="span8">    
     <ul class="microposts">
       <% @microposts.each do |micropost| %>
         <li>
           micropost.content
         </li>

我已经在 \app\controller\static_pages_controller.rb 中定义了:

class StaticPagesController < ApplicationController

  def home
    if signed_in?
      @micropost  = current_user.microposts.build
      @feed_items = current_user.feed.paginate(page: params[:page])
    end
  end

  def index
    @microposts = Micropost.all
  end
end

少了什么东西?我的数据库中已经有 310 个示例帖子...

4

2 回答 2

3

您要在哪个页面上显示帖子?如果是home,那么您应该修改您的home操作以加载所有帖子:

def home
  if signed_in?
    @micropost  = current_user.microposts.build
    @feed_items = current_user.feed.paginate(page: params[:page])
  end

  @microposts = Micropost.all
end

也许这是@feed_items您想在home页面上显示的?

于 2012-05-16T06:10:13.567 回答
2

您正在主视图中迭代 @microposts 实例变量,但您已在主操作中定义了 @micropost。你这样做是错误的。

您需要在主页视图中定义 @microposts 实例变量,以便您可以在页面上获取所有帖子。

于 2012-05-16T06:17:58.640 回答