0

私は高校ごとにユーザーの友達をグループ化しようとしています。ユーザーはFacebookアカウントでサインインし、Facebookグラフを使用してすべての友達を取得します。

このコードは、最初にすべてのユーザーの友達を出力/印刷し、高校ごとにすべての友達のグループを印刷します。グループを出力/印刷したいだけです。

<ul class="friends-list">
<% current_user.friends.group_by(&:highschool_name).map do |hsname, friends| %>
   <li><%= hsname %></li> 
   <% friends.map do |friend| %>
   <%= image_tag(friend.image) %> 
 <% end %>
 <% end %>
</ul>

ユーザー テーブル:

[id, name, image, location, highschool_name, highschool_year, college_name, college_year, graduteschool_name, graduate_year ]

フレンド テーブル:

[id, uid, name, image, higschool_name, college_name, graduateschool_name, user_id]

現在の出力の詳細:

Started GET "/users/1" for 127.0.0.1 at 2012-07-16 01:10:17 +0200
Processing by UsersController#show as HTML
  Parameters: {"id"=>"1"}
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", "1"]]
  Rendered users/_profile_content.html.erb (0.6ms)
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 1]]
  Friend Load (9.2ms)  SELECT "friends".* FROM "friends" WHERE "friends"."user_id" = 1
  Rendered users/show.html.erb within layouts/application (287.4ms)
  Rendered layouts/_shim.html.erb (0.1ms)
  Rendered layouts/_header.html.erb (2.3ms)
  Rendered layouts/_footer.html.erb (0.6ms)
Completed 200 OK in 321ms (Views: 309.3ms | ActiveRecord: 9.8ms)

出力のイメージ: http://postimage.org/image/tgyl9f27n/

4

2 に答える 2

0

問題: データベース内のいくつかの値が空でした。エラーが発生します

ソリューション:

<% next if hsname.blank? %>
于 2012-07-19T23:49:56.397 に答える
0

あなたの質問を完全に理解しているかどうかわかりませんが、グループごとに友達をリストしたいようです。それが正しければ、その 2 番目のマップ関数は必要ないと思います。

おそらくforループであるべきだと思います。

  <% current_user.friends.group_by(&:highschool_name).map do |hsname, friends| %>

       <li><%= hsname %></li> 
        <%for friend in friends%>
           <%= image_tag(friend.image) %> 
      <% end %>
   <% end %>

それが役立つことを願っています

于 2012-07-16T18:57:20.827 に答える