如何解决我遇到了这个问题:#<User:0xa8dc8b8>的未定义方法\'each\'
|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,它确实呈现了页面,但是没有添加朋友的链接。
解决方法
首先,您可能需要多元化化“友谊”。如果用户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。第一个循环通过一系列用户,第二个循环通过友谊。
,@user
是单个记录(一个用户)-您可以使用.each
遍历记录数组,而不是单个记录。
也许您的意思是@user.friends.each do |user|
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。