2009-11-20 4 views
2

Здесь есть классы, как я их настроить:link_to проблема с унаследованным Активным классом 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 

Для индекса действия Статистики контроллера:

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

+0

Когда вы создаете ресурс на своих маршрутах с помощью map.resources: stats, вы получаете кучу маршрутов бесплатно. Ознакомьтесь с разделом 3 в руководстве по маршрутизации для лучшего понимания методов маршрутизации, которые вы получаете из ресурсов RESTful: http://guides.rubyonrails.org/routing.html#restful-routing-the-rails-default – bensie

Смежные вопросы