我正在浏览公共活动的轨道广播
http://railscasts.com/episodes/406-public-activity?view=asciicast
在view / activities / 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">
您可以看到公共活动正在跟踪作业模型。轨道广播的日期是在二月份,我在宝石文档中找不到“可追踪”,它是否已经更新,你必须采取另一种方式吗?
如果它有助于我使用设计公司模型
已更新,已请求
当我这样做时
<%= activity.trackable %>
在我的views / activities / 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
答案 0 :(得分:3)
我是public_activity
的创造者。
此:
activity.trackable.job.title
肯定是错误的,因为您在job
对象上调用Job
方法,这没有意义。 trackable
是您的Job
对象。
确保该title
有job
属性,因为它看起来像您的作业模型有问题,而不是p_a的可跟踪关系。
答案 1 :(得分:1)
不熟悉gem,但看起来trackable
映射到多态连接中的job
对象。链接工作可能没有必要。
<%= link_to activity.trackable.title, activity.trackable %>
答案 2 :(得分:1)
不确定你是否解决了这个问题,但在我开始检查可追踪之前,我遇到了完全相同的问题。与d_ethier的答案类似,要解决此问题,请替换
<%= link_to activity.trackable.job.title, activity.trackable.job %>
带
<%= link_to activity.trackable.title, activity.trackable %>
要测试您还可以显示以下内容
<%= activity.trackable.inspect %>
如果检查可跟踪功能不显示您的模型标题,则表示您在public_activity之外存在问题。