2009-11-20 63 views
2

下面的link_to问题是类,因为我有他们设置:与继承的Active Record

class Stat < ActiveRecord::Base 
    belongs_to :stats_parent 
end 

class TotalStat < Stat 
    belongs_to :stats_parent 
end 

#The StatsParent class is just to show how I use the relation. 
class StatsParent < ActiveRecord::Base 
    has_one :total_stat 
    has_many :stats 
end 

对于统计控制器index操作:

def index 
    @stats = Stat.all 
    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @stat } 
    end 
end 

在索引视图统计数据有这段代码:

<% @stats.each do |stat| %> 
    ... 
    <td><%= link_to 'Show', stat %></td> 
<% end %> 

而且我得到这个错误:

undefined method `total_stat_path' for #<ActionView::Base:0x0000010324c1f8> 

为什么不能link_to在这里工作?我是否需要创建一个单独的控制器来处理TotalStat

回答

3

那里明显存在STI(单表继承)问题,但我需要查看更多代码才能看到真正的问题。快速修复将更具体的link_to路径:

<%= link_to "Show", stat_path(stat) %> 
+0

方法stat_path()生成某处。你能指出我的任何文档描述这样的方法是为我生成的吗? – lillq 2009-11-20 22:49:07

+0

当你使用map.resources创建一个资源路径时,你可以免费得到一堆路线。查看路由指南中的第3节,以更好地理解您从RESTful资源获得的路由方法:http://guides.rubyonrails.org/routing.html#restful-routing-the-rails-default – bensie 2009-11-20 23:02:41