0

我在rails中有一些嵌套的对象。用户 -> has_many :tasks -> has_one :location。

昨天,我以为我无法将位置值链接到任务,但现在我意识到我也无法在 show 中获取要输出的值。

我可以通过调试获得输出

<%= @user.tasks 中的任务 %>
        <%= 调试任务.locations %>
<% 结束 %>

输出

--- !ruby/对象:位置
属性:
    编号:“1”
    地址:“测试地址”
    城市:“芝加哥”
属性缓存:{}

更改属性:{}

等等等等等等

所以我想如果我用

<%= task.locations.address %>

Rails 会给我地址字段。但我得到一个

nil:NilClass 的未定义方法“地址”

关于我做错了什么的任何建议?

---------- 更新,包括模型---------------- 我的任务和位置模型是

类任务 < ActiveRecord::Base
     attr_accessible :user_id, :date, :description, :location_id

     属于_to:用户
     has_one :位置
结尾

类位置 < ActiveRecord::Base
     attr_accessible :address, :city, :state, :zip

     has_many:任务
结尾
4

1 回答 1

2

如果任务has_one位置,您将需要在位置末尾task.location.address不使用,因为返回实际对象而不是集合。在调用它的地址方法之前,您还需要确保您的位置存在,否则如果位置为零,您将收到错误消息。您可能对 try 方法感兴趣,例如.shas_onetask.location.try(:address)

于 2011-02-16T21:55:16.063 回答