Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法错误,公共活动在.trackable上_Ruby On Rails_Ruby On Rails 4_Public Activity - Fatal编程技术网

Ruby on rails 未定义的方法错误,公共活动在.trackable上

Ruby on rails 未定义的方法错误,公共活动在.trackable上,ruby-on-rails,ruby-on-rails-4,public-activity,Ruby On Rails,Ruby On Rails 4,Public Activity,我一直在关注Railscast名为“公共活动”的视频,我遇到了以下错误: undefined method `post' 当我试图输出已创建的帖子时,就会发生这种情况 我的部分内容如下所示: class Post < ActiveRecord::Base include PublicActivity::Model tracked owner: Proc.new{ |controller, model| controller.current_user } belongs_to :u

我一直在关注Railscast名为“公共活动”的视频,我遇到了以下错误:

undefined method `post'
当我试图输出已创建的帖子时,就会发生这种情况

我的部分内容如下所示:

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
\u 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 %>
<h2>Stream</h2>
 <% @activities.each do |activity| %>
 <%= link_to activity.owner.fullname, root_url %> 
 <%= render_activity activity %>
<% end %>
向添加了注释
从那以后就被移除了
我可以看到我的活动表实际上存储了所有新帖子,并创建了正确的所有者id,可跟踪类型帖子,键为帖子。创建

我的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
class Post
这是我的活动流(newsfeeds/index.html.erb

当我删除部分。我确实成功地打印了“owner.fullname”作为旁注

我的新闻源\u 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
class NewsfeedsController
我想做的和他在Railscast上想做的差不多。我想打印出这篇文章的标题


我的帖子有一个:标题和:内容

我设法弄明白了。问题在于:

link_to activity.trackable.post.title 
我实际上是在用清晰的代码问这个问题:

link_to activity.trackable.post.post.title
因为trackable存储模型,在本例中是post。这样我就不用写了。我只是把它去掉,在末尾加上“标题”。因此我称之为post.title

正确的工作方式是:

link_to activity.trackable.title

render\u activity
方法看起来像什么?例如,它基本上调用personal\u activity/post/\u create.html.erb。它是根据动作来指定提要的,比如说create是“created comment”,而_destroy是feed中的“deleted comment”,如果看不到实际的代码就很难说了,我想变量不会一直到部分。检查以确保
render\u activity
方法也传递了
activity
变量,并且它沿着行继续,直到到达分部。@CWitty尝试在不使用分部的情况下使用它,但出现了相同的错误。然而,我将代码改为:skrev et nyt innlegg,该代码已被删除,现在它将帖子显示为链接。但是,如何显示实际内容?它似乎没有得到任何与post模型相关的信息。当您将
链接更改为
以使用
可跟踪的属性时,它不起作用?它是否给了你错误,如果是,你能把它们包括在内吗?