2011-06-01 65 views
2

我試圖獲取用戶名使用Rails檢索與find_by_id(comment.user_id)的用戶名。名稱不工作

如果我使用插入到博客上的信息進行評論

<%= comment.user_id %>" 

它會給我一個ID,但如果我嘗試和檢索用戶然後調用它命名回零級

<%= User.find_by_id(comment.user_id).name %>" 

這是爲什麼不工作

如果我將.name關閉,它會返回內存中的空間。

#<User:000x00000182fe48> 
+0

你得到的User的實例,所以如果.name返回nil,那麼名稱不會被設置。請發佈設置名稱屬性的代碼。 – 2011-06-01 16:22:37

+1

假設你有正確的關係設置,爲什麼不只是'comment.user.name'? – Chowlett 2011-06-01 16:22:41

+1

爲什麼不使用關聯,以便可以執行'comment.user.name'?你也試過'(User.find_by_id(comment.user_id))。name'?順便說一句,在視圖中調用'find_by_ *'方法是一個壞主意。 – PeterWong 2011-06-01 16:23:12

回答

4

最有可能的,動態取景器是越來越被id混淆,並返回(紅寶石)對象的id(即object_id),而不是記錄的id

嘗試撥打User.find(comment.user_id).name代替。或者,更好:comment.user.name

上面應該回答你的問題,但你真的想要做的是:

在控制器:

@user_name = @comment.user.name 

在視圖:

<%= @user_name %>