ruby on rails 友谊以下节目总是我的名字
Posted
技术标签:
【中文标题】ruby on rails 友谊以下节目总是我的名字【英文标题】:ruby on rails friendship following shows always my name 【发布时间】:2012-09-21 12:04:50 【问题描述】:friendship.rb
belongs_to :user, :include => [:profile]
belongs_to :friend, :class_name => 'user'
user.rb
#following code
has_many :friendships
has_many :friends, :through => :friendships
#followers code
has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
has_many :inverse_friends, :through => :inverse_friendships, :source => :user
使用此代码显示我已加好友以及已加好友的人
查看
<h2>Friends</h2>
<ul>
<% for friendship in @user.friendships.includes(:user) %>
<li>
<%= friendship.user.username %>
(<%= link_to "remove", friendship, :method => :delete %>)
</li>
<% end %>
</ul>
<p><%= link_to "Find Friends", users_path %></p>
<h2>Friended by Users</h2>
<ul>
<% for user in @user.inverse_friends %>
<li><%=h user.username %></li>
<% end %>
</ul>
在第一个循环块上,我总是打印我的用户名,我们称之为“fxuser” 在第二个循环块上,我得到了与我成为朋友的正确用户名......
如何解决这个问题,以便第一个循环显示我已加好友的正确用户名?
【问题讨论】:
【参考方案1】:在您的第一个循环中,我相信friendship.user
指的是您自己;您正在寻找friendship.friend
。另外,我认为您想删除friendship
,而不是删除链接中的反面。
<% for friendship in @user.friendships.includes(:friend) %>
<li>
<%= friendship.friend.username %>
(<%= link_to "remove", friendship, :method => :delete %>)
</li>
<% end %>
你也需要改变
belongs_to :friend, :class_name => 'user'
到
belongs_to :friend, :class_name => 'User'
【讨论】:
以上是关于ruby on rails 友谊以下节目总是我的名字的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails 是 mongodb - mongoid