【问题标题】:Undefined method error with Public Activity on .trackable.trackable 上的公共活动的未定义方法错误
【发布时间】:2014-07-10 19:17:24
【问题描述】:

我一直在关注名为“公共活动”的 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 %>

我可以看到我的 activities 表实际上存储了所有新帖子,并创建了正确的 owner_id 并且 trackable_typePost 和 key Post.create

我的 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

【问题讨论】:

  • render_activity 方法是什么样子的
  • 例如,它基本上调用了personal_activity/post/_create.html.erb。它是根据操作指定提要,说 create 是“创建的评论”,而 _destroy 将是提要中的“删除评论”
  • 没有看到很难说的实际代码,我想变量并没有一直到部分。检查以确保render_activity 方法也传递了activity 变量,并且它继续向下直到到达部分。
  • @CWitty 尝试在没有部分的情况下使用它,但它有相同的错误。但是我将代码更改为: skrev et nytt innlegg 此后已被删除 现在它将帖子显示为链接。但是,如何显示实际内容?它似乎没有与帖子模型相关的任何内容..
  • 当您将link_to 更改为使用trackable 的属性时,它不起作用?它会给你带来错误吗?如果是,你能把它们包括进来吗?

标签: ruby-on-rails ruby-on-rails-4 public-activity


【解决方案1】:

我设法弄清楚了。问题在于:

link_to activity.trackable.post.title 

我实际上是在用清晰的代码问这个:

link_to activity.trackable.post.post.title

因为 trackable 存储模型,在本例中为 post。所以我不用写了。我只需要删除它并在最后添加“标题”。因此我称之为 post.title。

正确的工作方式是:

link_to activity.trackable.title

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多