用户名而不是user.id在视图中

时间:2013-03-26 05:20:40

标签: ruby-on-rails model-view-controller

快速提问:我想在视图中显示用户名(在我的情况下是一封电子邮件)而不是用户ID,我在这个代码中写道:

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

但是不要破坏我的协议MVC,这个代码应该转移到模型吗?

1 个答案:

答案 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 %>