快速提问:我想在视图中显示用户名(在我的情况下是一封电子邮件)而不是用户ID,我在这个代码中写道:
<%= User.find(post.user_id).Email %>
但是不要破坏我的协议MVC,这个代码应该转移到模型吗?
答案 0 :(得分: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 %>