通知フィードのアクティビティをレンダリングしようとしていますが、@activities
を正しくループする方法がわかりません。背景については@activitiesのデータ構造を持つ通知フィードの問題(ループを回避する方法がわからない)
、私はお勧めSitepointチュートリアルに従っ:https://www.sitepoint.com/super-easy-activity-feeds-with-stream/
私のコードは基本的に同じです。ここで@activities
オブジェクトだ:
<div class="page-header"><h1>Your notification feed</h1></div>
<% for activity in @activities %>
<%= render_activity activity %>
<% end %>
そして、私の部分(ビュー/ aggregated_activity/_follow.html.erb):
[2] pry(#<FeedsController>)> @activities
=> [{"activities"=>
[{"actor"=>
#<User id: 1, email: "[email protected]", created_at: "2017-06-08-21:33:00", updated_at: "2017-06-13 18:15:59", name: "Andy">,
"foreign_id"=>"Follow:4",
"id"=>"861b2600-5063-11e7-8080-8000262131d5",
"object"=>
#<User id: 1, email: "[email protected]", created_at: "2017-06-08 21:33:00", updated_at: "2017-06-13 18:15:59", name: "Andy">,
"origin"=>nil,
"target"=>nil,
"time"=>"2017-06-13T18:10:04.000000",
"to"=>["notification:1"],
"verb"=>"Follow"}],
"activity_count"=>1,
"actor_count"=>1,
"created_at"=>"2017-06-13T18:10:04.000000",
"group"=>"48946_2017-06-13",
"id"=>"861b2600-5063-11e7-8080-8000262131d5",
"is_read"=>false,
"is_seen"=>false,
"updated_at"=>"2017-06-13T18:10:04.000000",
"verb"=>"Follow"},
{"activities"=>
[{"actor"=>
#<User id: 1, email: "[email protected]", created_at: "2017-06-08 21:33:00", updated_at: "2017-06-13 18:15:59", name: "Andy">,
"foreign_id"=>"Follow:1",
"id"=>"8b249a80-4fbb-11e7-8080-80002a2ebc3f",
"object"=>
#<User id: 1, email: "[email protected]", created_at: "2017-06-08 21:33:00", updated_at: "2017-06-13 18:15:59", name: "Andy">,
"origin"=>nil,
"target"=>nil,
"time"=>"2017-06-12T22:07:37.000000",
"to"=>["notification:1"],
"verb"=>"Follow"},
{"actor"=>
#<User id: 2, email: "[email protected]", created_at: "2017-06-08 21:35:33", updated_at: "2017-06-08 22:01:50", name: "Niko">,
"foreign_id"=>"Follow:2",
"id"=>"40edea00-4fb8-11e7-8080-8000106d4b0d",
"object"=>
#<User id: 1, email: "[email protected]", created_at: "2017-06-08 21:33:00", updated_at: "2017-06-13 18:15:59", name: "Andy">,
"origin"=>nil,
"target"=>nil,
"time"=>"2017-06-12T21:44:04.000000",
"to"=>["notification:1"],
"verb"=>"Follow"}],
"activity_count"=>2,
"actor_count"=>2,
"created_at"=>"2017-06-12T21:44:04.000000",
"group"=>"48946_2017-06-12",
"id"=>"8b249a80-4fbb-11e7-8080-80002a2ebc3f",
"is_read"=>false,
"is_seen"=>false,
"updated_at"=>"2017-06-12T22:07:37.000000",
"verb"=>"Follow"}]
ここでメインビューには、(ビューは//notification.html.erbフィード)です。私は上記の部分を変更した場合
<div class="well well-sm">
<p><small class="text-muted"><%= time_ago_in_words activity['time'] -%> ago</small></p>
<p><strong><%= activity['object'].name %></strong> and <strong><%= activity['actor'].name %></strong> are now friends</p>
</div>
は、私は次のように、右のオブジェクトにアクセスすることができます。
<div class="well well-sm">
<p><small class="text-muted"><%= time_ago_in_words activity['activities'][0]['time'] %> ago</small></p>
<p><strong><%= activity['activities'][0]['object'].name %></strong> and <strong><%= activity['activities'][0]['actor'].name %></strong> are now friends</p>
</div>
しかし、それは正しい方法のようには見えません。表示される唯一のアクティビティは、私が自分自身をフォローしている場合で、2番目のユーザー(John)に従うときではないようです。値が配列であるこの配列のハッシュにループする最良の方法は何ですか?
ありがとうございました。それに遅れて戻ってきたことに対する謝罪。 チュートリアルはかなり古いです。それは2015年10月1日に出版されました。私は物事がその後変わったと確信しています。 問題自体については、私は戻り値を誤解していたと思います... Andyに従うために3人目のユーザー(Bob)を作成した後、通知フィードはAndyに続くBobを知らせます。 「Andyは現在Andyに従っています。私は、これは表示する通知を把握することにすぎないと思います。再度、感謝します! hahaを使ってストリームをより多く使うと、あなたは私から多くの質問を見ているかもしれません – PandyZhao
また、私はreadmeにあるループのオリジナルを使用してしまいました:<%for activity in @activities%> etc'再び、データで何が起きているのか誤解しています – PandyZhao