0

我正在浏览关于公共活动的 railscast

http://railscasts.com/episodes/406-public-activity?view=asciicast

在视图/活动/index.html

我的 index.html 中有这个

<% @activities.each do |activity| %>
  <div class="activity">
  <%= link_to activity.owner.company_name, activity.owner if activity.owner %>
  added a job <%= link_to activity.trackable.job.title, activity.trackable.job %>
  </div>
<% end %>

我有工作模式和公司模式

我的 job.rb 模型中有这个

include PublicActivity::Model
tracked owner: Proc.new{ |controller, model| controller.current_company }

这是我的活动索引控制器方法

def index
    @activities = PublicActivity::Activity.order_by(:created_at.desc)
  end

我正进入(状态

undefined method `job' for #<Job:0x007fda6e0384c8>

所以这部分不起作用

<%= link_to activity.trackable.job.title, activity.trackable.job %>

但有趣的是当我这样做时它会起作用

<%= activity.inspect %>

<%= link_to activity.owner.company_name, activity.owner if activity.owner %>

这是我的活动记录

#<PublicActivity::Activity _id: 526981707242c02d96000006, created_at: 2013-10-24 20:22:08 UTC, updated_at: 2013-10-24 20:22:08 UTC, trackable_type: "Job", trackable_field: nil, trackable_id: "526981707242c02d96000005", owner_type: "Company", owner_field: nil, owner_id: "5268454701e6af3eb9000003", recipient_type: nil, recipient_field: nil, recipient_id: nil, key: "job.create", parameters: {}, _type: "PublicActivity::Activity">

您可以看到公共活动正在跟踪作业模型。railscasts 的日期是 2 月,我在 gem doc 中找不到“可跟踪”,它是否已更新,您必须以另一种方式进行吗?

如果它有助于我使用公司模型的设计

已按要求更新

当我做

 <%= activity.trackable %>

在我的意见/活动/index.html 我得到这个

#<Job:0x007f882f47a248> #<Company:0x007f882f608a10> #<Company:0x007f882e0a4250> #<Job:0x007f882e0ac7c0> #<Job:0x007f882e0f6d98> #<Job:0x007f882e3d0eb0> #<Company:0x007f882e6319e8> #<Company:0x007f882e09ab60> #<Company:0x007f882e0ef0e8> #<Company:0x007f882e1c9658> #<Company:0x007f882e1979a0> #<Job:0x007f882e77b038> #<Company:0x007f882f612c90> #<Company:0x007f882ca7ffb0> #<Company:0x007f882f25dcd0> #<Job:0x007f882f267cf8> #<Company:0x007f882f2af148> #<Company:0x007f882c9d3648> #<Company:0x007f882c9d6f78> #<Job:0x007f882f5381a8> #<Job:0x007f882c999790> #<Job:0x007f882bd1e510> #<Job:0x007f882f121ad8> #<Job:0x007f882ca49208> #<Job:0x007f882c82c420> #<Job:0x007f882c921920> #<Job:0x007f882c923db0> #<Company:0x007f882c9ac318> #<Company:0x007f882c86f568> #<Job:0x007f882c872420> #<Job:0x007f882ca15a98> #<Job:0x007f882ca17d48> #<Job:0x007f882ca5eec8> #<Job:0x007f882ca698c8> #<Job:0x007f882c9c4328> #<Job:0x007f882c9c7460> #<Job:0x007f882c99f960> #<Job:0x007f882c9a2548> #<Job:0x007f882b379500> #<Company:0x007f882b37bd00> #<Company:0x007f882b386bd8> #<Job:0x007f882b388118> #<Company:0x007f882d057e88> #<Company:0x007f882e0af6c8> #<Company:0x007f882b0d9098> #<Company:0x007f882ca508f0> #<Company:0x007f882c9e36d8> #<Company:0x007f882ca6f6b0> #<Job:0x007f882b180848> #<Job:0x007f882b15e798> #<Company:0x007f882b1613f8> #<Company:0x007f882b1035a0> #<Company:0x007f882b185f28> #<Company:0x007f882f110530>

当我这样做时 <%= activity.owner %>

我得到这个输出

#<Company:0x007f882c9322c0> #<Company:0x007f882c93d558> #<Company:0x007f882c940578>

由于我正在跟踪公司模式的变化,所以我也有这个

include PublicActivity::Model
tracked

我认为一切都很好,但我就是无法将工作记录从我的活动中提取出来?

更新

我正在使用 mongoid,这是我的 job.rb 模型

class Job


    include Mongoid::Document
    include Mongoid::Timestamps

    include PublicActivity::Model
        tracked owner: Proc.new{ |controller, model| controller.current_company }

    field :title 
    field :description
    field :skills
    field :education
    field :location

    belongs_to :company

end 
4

3 回答 3

3

我是public_activity.

这个:

activity.trackable.job.title

绝对不正确,因为您job在对象上调用方法Job,这没有意义。trackable是你的Job对象。

确保有title那个属性job,因为它看起来像是你的 Job 模型的问题,而不是 p_a 的可跟踪关系。

于 2013-10-25T15:06:56.177 回答
1

对 gem 不太熟悉,但它看起来像trackable映射到job多态连接中的对象。可能不需要链接作业。

<%= link_to activity.trackable.title, activity.trackable %>
于 2013-10-25T03:13:13.373 回答
1

不确定你是否解决了这个问题,但在我开始检查可跟踪之前我遇到了完全相同的问题。与 d_ethier 的回答类似,要解决此问题,请替换

<%= link_to activity.trackable.job.title, activity.trackable.job %>

<%= link_to activity.trackable.title, activity.trackable %>

要测试您还可以显示以下内容

<%= activity.trackable.inspect %>

如果检查 trackable 未显示模型的标题,则说明您在 public_activity 之外遇到了问题。

于 2014-02-12T21:24:18.053 回答