2015-07-12 17 views
1

我一直在努力遵循Michael Hartl的教程。因此,我有一個數據庫設置,如下所示:如何顯示軌道中的用戶跟隨者相關表的互惠關係

enter image description here

我想,當用戶(例如用戶A)是以下的另一用戶,只顯示(例如用戶B)和用戶B和跟隨用戶A回來。

我想在模型中定義這個,然後將執行控制器操作的ajax調用。

我試着用另一個question的答案。這是我迄今爲止

user.rb

def reciprocal_followers 
    self.followers & self.followed_users 
end 

users_controller.rb

def reciprocal_followers 
    @reciprocal_followers =current_user.reciprocal_followers 
end 

index.html.erb

<% @reciprocal_followers %> 

但我得到什麼回報

所以我ch anged的index.html.erb到

<%= current_user.reciprocal_followers %> 

,我得到我期望但如果我只是想reciprocal_followers我得到「未定義」錯誤的ID或名稱的結果。

我怎樣才能互惠追隨者

列表
+0

數組能否請你澄清你的問題「這一部分,我得到的結果我期待雖然如果我只想要id或名稱的reciprocal_followers,我會得到'未定義'的錯誤。「好像你在說你正在通過」<%= current_user.reciprocal_followers%>「查詢來檢索正確的記錄集。也許你可以發佈產生你提到的錯誤的代碼? – Elvn

+0

如果我使用<% = current_user.reciprocal_followers%>然後我得到所有相關用戶的整個記錄​​。互惠用戶是正確的我只想要名稱,但不是整個記錄。如果我然後使用<%= current_user.reciprocal_followers.name%>那麼我得到錯誤'未定義的方法'名稱'爲#' –

回答

3

彈跳undefined method

當您使用&運算符時,它將對數組執行操作,這意味着它已經加載了數據庫的內容。換句話說

self.followers & self.followed_users 

相當於

self.followers.to_a & self.followed_users.to_a 

並且將返回跟隨對象的數組。

實際上,你可以做到這一點,以獲得它們的ID:

<%= current_user.reciprocal_followers.map(&:id) %> 

它將返回reciprocal_follower IDS

+0

我得到的.map是未定義的錯誤 –

+0

你能寫出完整的錯誤嗎? '.map' [是數組的Ruby方法](http://ruby-doc.org/core-2.2.0/Array.html#method-i-map),所以如果它返回undefined,則意味着'@reciprocal_followers '不是一個數組。您是否嘗試使用'current_user.reciprocal_followers.map(&:id)'而不是'@ reciprocal_followers.map(&:id)'? –

+0

偉大的工作。所以我猜@reciprocal_followers不是一個數組,所以我不確定它是什麼。無論如何,它已經工作 –

0

請您index.html.erb改變這一行

<% @reciprocal_followers %> 

對此

<%= @reciprocal_followers %> 

讓我知道會發生什麼

+0

實際上都不返回任何東西。唯一的行是<%= current_user.reciprocal_followers%>。在這後面的語句中刪除=也不返回任何東西 –

+0

我很高興你從@Cyril得到了答案,但請記住,未來,如果你想顯示var引用你需要的「<%=」。「<%」沒有等於將不會顯示任何東西,永遠ril的答案有「<%=」來顯示記錄。如果你想要這個概念的證明,就不要平等地嘗試。 – Elvn