Ruby on rails 如何获得';feed';用户模型中的方法不是私有的,因此我可以在静态页面/主页中显示提要(Michael Hartl Rails教程)

Ruby on rails 如何获得';feed';用户模型中的方法不是私有的,因此我可以在静态页面/主页中显示提要(Michael Hartl Rails教程),ruby-on-rails,ruby,activerecord,models,Ruby On Rails,Ruby,Activerecord,Models,我正在学习MichaelHartl的Rails教程(),在第10.36章中,我们正在创建microposts的提要,以显示在用户的主页上。当我读到第10.41节时,我应该能够看到主页上的所有帖子,但我一直得到一个 NoMethodError in StaticPagesController#home private method `feed' called for #<User:0x007f881cf77410> if signed_in? @micropost =

我正在学习MichaelHartl的Rails教程(),在第10.36章中,我们正在创建microposts的提要,以显示在用户的主页上。当我读到第10.41节时,我应该能够看到主页上的所有帖子,但我一直得到一个

NoMethodError in StaticPagesController#home
private method `feed' called for #<User:0x007f881cf77410>

if signed_in?
        @micropost = current_user.microposts.build if signed_in?
        @feed_items = current_user.feed.paginate(page: params[:page]) <-- error line
    end 
 end
静态页面控制器主页中的命名错误 调用了专用方法“feed”# 如果你签到了? @micropost=当前用户。micropost.build(如果已登录)?
@feed_items=current_user.feed.paginate(page:params[:page])根据调用#``的错误
私有方法
feed`

您正在对
User
模型的实例调用名为
feed
private
方法

为了使下面的代码正常工作

 @feed_items = current_user.feed.paginate(page: params[:page])
确保
User
模型中的方法
feed
不在
private
部分下。

请记住,私有方法(即在任何类之外声明的方法)不能在其他对象上调用

更新

您在定义的方法之前关闭了
User
类。因此,出现了错误

class User < ActiveRecord::Base
    ## ...
    validates :password, length: { minimum: 6 }
end  ## REMOVE THIS end

def feed
   ## ...

private

def create_remember_token
    self.remember_token = User.digest(User.new_remember_token)
end

end ## ADD THIS end 
class用户
Hi Kirti,谢谢你的回复。我刚刚在user.rb文件中进行了编辑。我在user.rb的private部分下没有feed方法,但我仍然得到了错误。请参阅我答案中的
UPDATE
部分。@djsjc很乐意提供帮助。:)请勾选我答案旁边的复选标记,接受答案。如果你不知道怎么做,请阅读这里
<% if signed_in? %>
  <div class="row">
    <aside class="span4">
      <section>
        <%= render 'shared/user_info' %>
      </section>
      <section>
        <%= render 'shared/micropost_form' %>
      </section>
    </aside>
    <div class="span8">
      <h3>Post Feed</h3>
      <%= render 'shared/feed' %>
    </div>
  </div>
<% if @feed_item.any %>
    <ol class="microposts">
        <%= render partial: 'shared/feed_item', collection: @feed_items %>
    </ol>
    <%= will_paginate @feed_items %>
<% end %>
 @feed_items = current_user.feed.paginate(page: params[:page])
class User < ActiveRecord::Base
    ## ...
    validates :password, length: { minimum: 6 }
end  ## REMOVE THIS end

def feed
   ## ...

private

def create_remember_token
    self.remember_token = User.digest(User.new_remember_token)
end

end ## ADD THIS end