这让我疯了,我无法弄清楚我做错了什么。
我正在通过表单中的关联检索对象。我希望保存的结果显示来自其相关对象的信息。我知道正在检索该对象,但我无法访问其属性:
当我执行以下操作时:
<%= mp.object.margin.inspect %>
我得到以下信息:
#<Margin id: 1, margin_low: 0, margin_high: 0, created_at: "2015-09-10 16:05:43", updated_at: "2015-09-10 16:05:43", description: "A draw">
但是当我将其更改为以下内容时:
<%= mp.object.margin.description %>
我一直收到以下错误:
undefined method `description' for nil:NilClass
<div class="col-md-4"><%= mp.object.margin.description %></div>
我到底做错了什么?我检查了我的关系,他们看起来很好。我无法理解如何使用'description'属性返回一个对象但我无法访问它。
感谢您寻找
编辑1已解决
好的,我正在做一些愚蠢的事情!某些对象没有返回边距,这就是造成问题的原因。我一直在看这台电脑太久了:)
我会在20分钟内删除帖子
答案 0 :(得分:1)
在Rails中,您可以使用try
保护自己免受no method errors
的攻击。</ p>
mp.object.margin.try(:description)
或
mp.try(:object).try(:margin).try(:description)
然而,这是对Demeter 的法律的明显违反:
- 每个单位对其他单位的知识应该有限:只有与当前单位“密切”相关的单位。
- 每个单位只应与其朋友交谈;不要和陌生人说话。
- 只与您的直接朋友交谈。