我一直在关注名为“公共活动”的 Railscast 视频,但遇到以下错误:
undefined method `post'
当我尝试输出已创建的帖子时会发生这种情况。
我的部分看起来像这样:
_create.html.erb
added comment to
<% if activity.trackable %>
<%= link_to activity.trackable.post.title, activity.trackable.post %>
<% else %>
which has since been removed
<% end %>
我可以看到我的活动表实际上存储了所有新帖子,并创建了正确的 owner_id 并且trackable_type是带有键Post.create的Post
我的 post.rb 模型如下所示:
class Post < ActiveRecord::Base
include PublicActivity::Model
tracked owner: Proc.new{ |controller, model| controller.current_user }
belongs_to :user
has_many :comments, dependent: :destroy
end
这是我的活动流(newsfeeds/index.html.erb)
<h2>Stream</h2>
<% @activities.each do |activity| %>
<%= link_to activity.owner.fullname, root_url %>
<%= render_activity activity %>
<% end %>
当我删除部分。我确实成功打印出“owner.fullname”作为附注。
我的newsfeeds_controller.rb:
class NewsfeedsController < ApplicationController
def index
@activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.friend_ids, owner_type: "User")
end
def show
end
end
我想做的和他在 Railscast 上做的几乎一样。我想打印出帖子的标题。
我的帖子有一个 :title 和 :content