场合
返回单个记录的任何地方,以下代码可以正常工作
@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
答案 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方法。这让我觉得将方法传递给查看有问题,但是我已经了解到,对于这个特定的问题,有两个方面需要考虑。 当前用于呈现页面和正确关联的信息。