我尝试使用Public Activity gem和Railscast在我的rails / angular应用程序中构建活动流。这是一个非常简单的设置在轨道上,但我在角度方面遇到了一些麻烦。
我已经跟踪了我的电影模型。因此,当添加电影时,它被记录为新活动。我已经创建了一个模板,服务和控制器(在角度侧)来显示活动。
模板,
%ul{"ng-repeat" => "activitie in activities"}
%li {{ activitie }}
当我在我的应用程序中查看模板时,它会显示如下(预期)。
{"id":2,"trackable_id":5,"trackable_type":"Movie","owner_id":1,"owner_type":"User","key":"movie.create","parameters":{},"recipient_id":null,"recipient_type":null,"created_at":"2015-12-30T11:55:06.766Z","updated_at":"2015-12-30T11:55:06.766Z"}
当然,这不是我想要显示数据的方式,但在这里它变得棘手。在railscast中,Ryan将此代码添加到他的模板中,
<% @activities.each do |activity| %>
<div class="activity">
<%= link_to activity.owner.name, activity.owner if activity.owner %>
<%= render_activity activity %>
</div>
<% end %>
所以他用activity.owner.name
来表示名字。但是我不知道如何在Angular中得到这个结果。 owner_id
是添加电影的用户的ID,但我不知道如何通过Angular显示它。
答案 0 :(得分:1)
您可以加入users表以合并用户名。
PublicActivity::Activity.
joins("INNER JOIN users ON users.id = activities.owner_id").
select("activities.*, users.name")
现在您应该可以致电activity.name
。