Rails不允许我访问对象属性

时间:2015-09-10 20:00:11

标签: ruby-on-rails

这让我疯了,我无法弄清楚我做错了什么。

我正在通过表单中的关联检索对象。我希望保存的结果显示来自其相关对象的信息。我知道正在检索该对象,但我无法访问其属性:

当我执行以下操作时:

<%= 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分钟内删除帖子

1 个答案:

答案 0 :(得分:1)

在Rails中,您可以使用try保护自己免受no method errors的攻击。<​​/ p>

mp.object.margin.try(:description)

mp.try(:object).try(:margin).try(:description)

然而,这是对Demeter 法律的明显违反:

  
      
  • 每个单位对其他单位的知识应该有限:只有与当前单位“密切”相关的单位。
  •   
  • 每个单位只应与其朋友交谈;不要和陌生人说话。
  •   
  • 只与您的直接朋友交谈。
  •   

https://en.wikipedia.org/wiki/Law_of_Demeter