Rails View:显示可以为空的关联对象的描述的惯用方式?

发布于 2024-10-30 20:03:37 字数 695 浏览 2 评论 0原文

模型Member属于Discipline,即用户可以有一个纪律,但它是可选的。

我想知道当我显示用户详细信息时,显示成员纪律的惯用 Rails 方式是什么。

我的第一种方法

<b>Discipline:</b>
<%=h @member.discipline.name %>

在其他方面工作正常,但如果成员的纪律为 Nil,则会失败并显示 NoMethodError。在这种情况下,我希望那里什么都没有。

我有几个替代方案是

  • Define 方法 Member:discipline_name ,如果成员没有学科
  • 限制输出,则返回“” if;

“如果”的替代方案是这样的:

<b>Discipline:</b>
<% if @member.discipline %>
<%=h @member.discipline.name %>
<% end %>

这不是一个重大的决定,但我想知道是否有一种“惯用的方式”来做到这一点,或者需要考虑一些帮助/东西或其他东西。

br、图子

Model Member belongs_to Discipline, i.e. user can have a discipline but it is optional.

I'm wondering what would be the idiomatic Rails way to show member's discipline when I show the user details.

My first approach

<b>Discipline:</b>
<%=h @member.discipline.name %>

works otherwise fine but fails with NoMethodError if member's discipline is Nil. In that case, I'd like to have nothing there.

A couple of alternatives I have are

  • Define method Member:discipline_name that returns "" if member doesn't have a discipline
  • Restrict output with if;

The alternative with "if" would be something like:

<b>Discipline:</b>
<% if @member.discipline %>
<%=h @member.discipline.name %>
<% end %>

This isn't a big decision to make but I'd like to know if there's an "idiomatic way" to do this or some helper/something or something else to consider.

br, Touko

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雨轻弹 2024-11-06 20:03:37

在我看来,惯用的方式是:

<b>Discipline:</b>
<%=h @member.discipline.name if @member.displince.present? %>

In my opinion the idiomatic way would be:

<b>Discipline:</b>
<%=h @member.discipline.name if @member.displince.present? %>
余厌 2024-11-06 20:03:37

实际上,进一步发展 Wukerplank 的答案,以下似乎工作正常并且非常简洁:

<b>Discipline:</b>
<%=h @member.discipline.name if @member.discipline %>

Actually, developing Wukerplank's answer further, following seems to work fine and be pretty concise:

<b>Discipline:</b>
<%=h @member.discipline.name if @member.discipline %>
酒几许 2024-11-06 20:03:37

如果您需要在不存在的情况下显示任何内容,可以使用 ternery 运算符:

<%= condition ? statement true : statement false %>

<%= @member.discipline ? @member.discipline.name : 'none' %>

If you need to display anything in case of non-existence, you can use the ternery operator:

<%= condition ? statement true : statement false %>

<%= @member.discipline ? @member.discipline.name : 'none' %>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文