我正试图使用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显示它。
您可以加入users表来合并用户名。
PublicActivity::Activity.
joins("INNER JOIN users ON users.id = activities.owner_id").
select("activities.*, users.name")
现在您应该可以调用activity.name
了。