2013-03-26 63 views
-2

快速的問題user.id:我想(在我的情況下,電子郵件)來顯示用戶名,而不是針對用戶ID,我考慮寫這樣的代碼:用戶名,而不是針對

<%= User.find(post.user_id).Email %> 

但不要打破我的協議MVC,這個代碼應該移動到模型?

+0

你可以試試'<%= current_user.email%' – cclerville 2013-03-26 05:24:36

回答

1

首先,您不能像這樣使用大寫的電子郵件 - 您需要調用方法(小寫)電子郵件,而不是類名稱。

<%= User.find(post.user_id).email %> 

你可能想找到@user = User.find(@ post.user_id)控制器,那麼你可以做@ user.email視圖...甚至更好的控制器設置@user_email 。你不應該從視圖中調用模型。您的控制器應該與模型交談並將數據傳遞給視圖。

所以,這樣的事情在控制器:

@post = Post.find(params[:id]) 
@user_email = @post.user.email 

然後在視圖中你可以做

<%= @user_email %> 
+0

謝謝您回答。我可以這樣寫: <%= post.user.email%> 而不是: User.find(post.user_id).email。而且這種方式會不會好? – shade88 2013-03-26 05:38:32

+0

yup - 如果你很高興在你的視圖中擁有該鏈,那麼你可以這麼做......最有可能的是@ post.user.email,如果你設置實例變量 – 2013-03-26 05:41:38

+0

我已經在我的回答中澄清了一些替代方案 – 2013-03-26 05:43:59

相關問題