Rails View:显示可以为空的关联对象的描述的惯用方式?
模型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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在我看来,惯用的方式是:
In my opinion the idiomatic way would be:
实际上,进一步发展 Wukerplank 的答案,以下似乎工作正常并且非常简洁:
Actually, developing Wukerplank's answer further, following seems to work fine and be pretty concise:
如果您需要在不存在的情况下显示任何内容,可以使用 ternery 运算符:
If you need to display anything in case of non-existence, you can use the ternery operator: