2015-09-27 64 views
0

我有一個奇怪的問題。我在網站有友誼系統,我正在努力尋找共同的朋友。爲了做到這一點,我使用了十字路口,但是它在視野中輸出,這根本沒有意義。相交'&'在視圖中輸出結果

我在幫手中有這個。

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 & 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

你介意在函數display_connections_buttons背後分享你的視圖代碼嗎?如果你可以分享它,請用它更新你的問題。 –

+0

@TheFabio我添加了查看代碼。 – cyonder

+0

「profiles/connections_buttons」部分文件在哪裏? – Arvind

回答

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 

的注意事項 - 這將有望讓你看到它是如何工作的,但你可能要重構和做從視圖渲染。在模型上放置一個方法來返回普通朋友並在視圖中渲染它們。最後你根本不會使用這個幫手。

+0

我試過你的方式,我現在得到渲染輸出。我編輯了這篇文章。順便說一句,謝謝你試圖修復。 – cyonder

+0

在模型中編寫方法是解決此問題的好方法,但我無法編寫。我收到錯誤。如果你想看到我的模型,請看看這裏:http://stackoverflow.com/questions/32809083/displaying-mutual-friends/32810542#32810542 – cyonder

+0

它的工作原理!你真了不起。另外,我在返回輸出結束時提供了.html_safe,現在它呈現按鈕。完美的作品。但是,你能否更詳細地解釋一下爲什麼我們將它保存在一個變量中。 – cyonder