我有一个奇怪的问题。我在网站上有友谊系统,我正在寻找共同的朋友。为了做到这一点,我使用了交集,但它在视图中输出,这根本没有意义。
我帮助了我。
def display_connections_buttons(friend_id)
if(@profile.id == current_user.id) || (@profile.username == current_user.username)
else
common_friends = @profile.friends & current_user.friends
common_friends.each do |friend|
if friend.id == friend_id
render 'profiles/connections_buttons'
end
end
end
end
据普通朋友说,我打算渲染按钮。但是我在屏幕上输出了这个输出:
#<User id: 9, first_name: "REMOVED", last_name: "REMOVED", email: "REMOVED", password_digest: "$2a$10$xkaCxStsc70BYpJN9yulQOuDyXOBJEIEaW817YDst9t...", authorization_token: "REMOVED", username: "", school: "REMOVED", program: nil, information: nil, website: nil, courses: nil, groups: nil, picture_id: nil, created_at: "2015-09-24 19:51:52", updated_at: "2015-09-24 19:51:52">]
我用'REMOVED'替换了一些数据。我不希望它出现。
我删除了一些代码来了解输出的来源,以及当我删除'common_friends = @ profile.friends&amp; current_user.friends的输出从屏幕上消失。为什么你认为这段代码会输出?
谢谢。
查看档案
<span class="list-group-item title">Connections</span>
<div class="connections clearfix">
<% @profile.friends.each do |friend| %>
<div class="connection pull-left">
<div class="content pull-left">
<div class="connection-thumbnail pull-left">
<%= image_tag friend.picture_id.blank? ? 'default.png' : friend.picture_id, :class => 'frame' %>
</div>
<div class="connection-name">
<%= link_to friend.first_name + ' ' + friend.last_name, profile_path(friend.id) %>
</div>
<div class="connection-information">
<div class="information"><%= friend.website %></div>
<div class="information"><%= friend.colour %></div>
</div>
</div>
<div class="connection-dropdown">
<%= display_connections_buttons(friend.id) %>
</div>
</div>
<% end %>
</div>
在我尝试使用@Swards之后,我将渲染的输出作为文本。不是变量。
<div class="dropdown pull-right"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> Options <span class="caret"></span> </button> <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> <li><a href="#">Send Message</a></li> <li role="separator" class="divider"></li> <li><a href="#">Disconnect</a></li> </ul> </div>
答案 0 :(得分:1)
我认为这是因为这段代码......
common_friends = @profile.friends & current_user.friends
common_friends.each do |friend|
if friend.id == friend_id
render 'profiles/connections_buttons'
end
end
是在方法中运行的最后一个,并返回到视图并呈现为字符串。渲染没有按照你的想法进行,结果就是丢失了。相反,将其设置为变量并将其返回
output = ""
common_friends = @profile.friends & current_user.friends
common_friends.each do |friend|
if friend.id == friend_id
output += render('profiles/connections_buttons')
end
end
return output
注意 - 这有望让你看到它是如何工作的,但你可能想重构并从视图中进行渲染。在模型上放置一个方法以返回常见的朋友并在视图中呈现它们。最后你根本不会使用这个助手。