【问题标题】:User name instead of user.id in view视图中的用户名而不是 user.id
【发布时间】:2013-03-15 19:49:09
【问题描述】:

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

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

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

【问题讨论】:

  • 你可以试试&lt;%=current_user.email%

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


【解决方案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 %>

【讨论】:

  • 感谢您的回答。我可以这样写: 而不是:User.find(post.user_id).email。这会是正确的方式吗?
  • 是的 - 如果你很高兴在你的视图中有这个链,你可以这样做......如果你设置了实例变量,很可能是@post.user.email
  • 我已经在我的回答中阐明了一些替代方案
猜你喜欢
  • 1970-01-01
  • 2010-09-23
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多