gpt4 book ai didi

ruby-on-rails - Rails - 如何访问 html.erb 模板中的外键对象?在控制台中工作

转载 作者:行者123 更新时间:2023-12-04 07:39:23 24 4
gpt4 key购买 nike

我正在通过尝试为集换式纸牌游戏建模来学习 Rails。

我有一个冠军模型和一个稀有模型。我在模型定义中有 has_many/belongs_to,这在控制台中有效:

c = Champion.find(1)

c.rarity.name
=> "Uncommon"

当我在模板中做同样的事情时,我得到

<%= champion.rarity.name %>

undefined method `name' for nil:NilClass

关于如何让它发挥作用的任何想法?

这是在 Rails 3.2.2 上。

更新:完整的 .erb 代码

<% @champions.each do |champion| %> 
<tr>
<td><%= champion.name %></td>
<td><%= champion.rarity.name %></td>
</tr>
<% end %>

最佳答案

如果每个 Champion 都没有 Rarity 关联(有些是 nil),您可以使用 .try() 来打印名字。否则,当遇到没有 Rarity 的对象时,.each 将失败并返回 NoMethod

<% @champions.each do |champion| %> 
<tr>
<td><%= h champion.name %></td>
<td><%= h champion.rarity.try(:name) %></td>
</tr>
<% end %>

或者不太聪明的 unless nil 方法:

<% @champions.each do |champion| %> 
<tr>
<td><%= h champion.name %></td>
<td><%= h champion.rarity.name unless champion.rarity.nil? %></td>
</tr>
<% end %>

注意:我还添加了 h() 辅助方法来为 HTML 输出编码这些内容,尽管这是在 Rails 3 中自动完成的。

关于ruby-on-rails - Rails - 如何访问 html.erb 模板中的外键对象?在控制台中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com