Rails:从相关模型中查找名称的优雅方式

时间:2016-12-03 08:43:19

标签: ruby-on-rails

我要模特:
父亲有很多孩子 f_name 孩子属于父亲 c_name father_id(fk)

在儿童的索引页面中,我想显示c_name和父亲的姓名

<% @children.each do |child|%>
  <%= child.name %>
  <% if Father.find(child.father_id) %>
    <%= Father.find(child.father_id).f_name %>
  <% end %>
<% end %>

我不认为代码很优雅。也许我应该把它们放到帮手或模型中,但我不知道该怎么做。 任何人的帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我不确定你的控制器是怎样的,但它可能是这样的。

@children = Child.includes(:father)

在视图中:

<% @children.each do |child|%>
  <%= child.name %>
  <%= child.father.try(:name) %>
<% end %>

try<%= child.father.name if child.father %>

相同

答案 1 :(得分:1)

如果您在模型中正确设置了关系,那么rails将为您提供一些不错的帮助方法。在这种情况下,您可以找到孩子的父亲:child.father。然后当然child.father.name得到父亲的名字。

如果您担心孩子没有父亲,那么您可以做以下事情:

<%= child.father.name if child.father %>