快速的問題user.id:我想(在我的情況下,電子郵件)來顯示用戶名,而不是針對用戶ID,我考慮寫這樣的代碼:用戶名,而不是針對
<%= User.find(post.user_id).Email %>
但不要打破我的協議MVC,這個代碼應該移動到模型?
快速的問題user.id:我想(在我的情況下,電子郵件)來顯示用戶名,而不是針對用戶ID,我考慮寫這樣的代碼:用戶名,而不是針對
<%= User.find(post.user_id).Email %>
但不要打破我的協議MVC,這個代碼應該移動到模型?
首先,您不能像這樣使用大寫的電子郵件 - 您需要調用方法(小寫)電子郵件,而不是類名稱。
<%= 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 %>
謝謝您回答。我可以這樣寫: <%= post.user.email%> 而不是: User.find(post.user_id).email。而且這種方式會不會好? – shade88 2013-03-26 05:38:32
yup - 如果你很高興在你的視圖中擁有該鏈,那麼你可以這麼做......最有可能的是@ post.user.email,如果你設置實例變量 – 2013-03-26 05:41:38
我已經在我的回答中澄清了一些替代方案 – 2013-03-26 05:43:59
你可以試試'<%= current_user.email%' – cclerville 2013-03-26 05:24:36