0

情况

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

    @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
4

2 回答 2

0

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

于 2013-01-23T09:27:54.183 回答
0

关联的sql可能是错误的。

SQL -

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

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

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

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

然后你可以遍历它来获取stat每个状态。

于 2013-01-21T14:31:22.253 回答