19: <strong>URL</strong> <%= link_to user_path(@user),(@user)%><br />
20:
21: <strong>Thoughts</strong> <%= @user.thoughts.count %>
22: <% @user.each do |user| %>
23: <li>
24: <% if Friendship.are_friends(current_user, user) %>
25: (you are friends)
它在第 22 行抛出错误。我不明白为什么。我只是想为每个朋友做循环。
编辑:1
我实际上正在尝试通过社交网络侧边栏中的链接发送友谊请求。这是它错过的代码:
<% @user.friendship.each do |user| %>
<li>
<% if Friendship.are_friends(current_user, user) %>
(you are friends)
<% elsif current_user != user %>
(<%= link_to "request friendship", :controller => :friendship, :action => :req, :id => user.name %>)
<% end %>
</li>
<% end %>
<h2>Your Friends</h2>
<ol>
<% @user.each do |friendship| %>
<li><%= friendship.friend.name %>, <%= friendship.status %></li>
<% end %>
</ol>
我尝试添加user.friendship,它确实呈现了页面,但没有添加朋友的链接。
@user
是单个记录(一个用户) - 您可以使用.each
循环访问记录数组,而不是单个记录。
也许你的意思是像@user.friends.each do |user|
?
首先,您可能需要复数化"友谊"。 如果用户has_many:friendships,那么你的代码应该是@user.friendships.each
其次,@user.friendships.each 将返回友谊,而不是用户。 您的模型是如何设置的? 假设您有一个用户模型和一个友谊模型。 友谊模型应如下所示:
class Friendship < ActiveRecord::Base
#attributes should be :person_id, friend_id
belongs_to :person, :class_name => "User"
belongs_to :friend, :class_name => "User"
end
用户模型是这样的:
class User < ActiveRecord::Base
has_many :friendships, :foreign_key => "person_id", :dependent => :destroy
has_many :friends, :through => :friendships
end
在这种情况下,您可能希望使用 @user.friends.each 而不是 @user.friendships.each。 第一个将遍历用户数组,第二个将循环遍历友谊。