无法从视图轨道3.2访问关联的模型方法

时间:2013-01-21 13:50:25

标签: ruby-on-rails rails-activerecord

场合

  • 我有两种型号电缆和状态
  • 电缆属于状态,状态有许多电缆
  • 返回单个记录的任何地方,以下代码可以正常工作

    @cable.status.stat #where stat is one of the columns in status
    
  • 但是,由于我的索引返回所有电缆,当我尝试通过执行以下操作从视图中访问它们时

    <% @cables.each do |cable| %>
        <td><%= cable.Cable_Hex %></td>
        <td><%= cable.status.stat %></td>
      </tr>
    <% end %>
    

我收到一条错误消息,指出.stat无法识别。 当我删除.stat并将其保留为cable.status时,我只看到一个地址。

如果我尝试访问foreign_id,那么我可以毫无问题地看到它。显然,相关方法并不容易获得。

如何从视图中访问关联的模型方法?

- 编辑 - 按要求包括两个模型

电缆型号

class Cable < ActiveRecord::Base
    belongs_to :user, :inverse_of => :cables
    belongs_to :status, :inverse_of => :cables
end

状态模型

class Status < ActiveRecord::Base
    has_many :cables, :inverse_of => :statuses  
end

2 个答案:

答案 0 :(得分:0)

可能是错误的sql用于关联。

SQL -

Cable.where("cables.status_id IS NOT NULL")

要获取状态记录,您可以使用加入

 Status.joins( :cables ).where("cables.status_id IS NOT NULL")

这将返回与Cables关联的所有状态记录。

然后,您可以遍历它以获取每个状态的stat

答案 1 :(得分:0)

问题的原因是测试向量错误。它们未正确初始化,并且返回的错误是找不到stat方法。这让我觉得将方法传递给查看有问题,但是我已经了解到,对于这个特定的问题,有两个方面需要考虑。 当前用于呈现页面和正确关联的信息。