Ruby on rails 如何获得';feed';用户模型中的方法不是私有的,因此我可以在静态页面/主页中显示提要(Michael Hartl Rails教程)
我正在学习MichaelHartl的Rails教程(),在第10.36章中,我们正在创建microposts的提要,以显示在用户的主页上。当我读到第10.41节时,我应该能够看到主页上的所有帖子,但我一直得到一个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 =
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