2013-03-07 2 views
3

Я получаю uninitialized constant Project::Forum::Topic внеинициализированным постоянная Model1 :: Model2 :: Model3

app/controllers/home_controller.rb:46:in `discussions' 

У меня есть код ниже, и я конвертировании из rails 2.3.x в rails 3.2.11, я имею в виду что-то неправильное в routes обстановке.

Любая идея Как я могу исправить?

модели

class Project < ActiveRecord::Base 
     # Relations under project model 
     has_many :features, :dependent => :destroy 
     has_many :forums, :class_name=>'Forum::Forum' 
     has_many :topics, :class_name=>'Forum::Topic', :through=>:forums 
class Forum::Forum < Feature 
    # Relations under forum model 
    has_many :topics, :class_name => 'Forum::Topic', :dependent => :destroy 

class Feature < ActiveRecord::Base 
    # Relations under feature model 
    belongs_to :project 

class Forum::Topic < ActiveRecord::Base 
    # Relations under topic model 
    belongs_to :forum, :foreign_key => :forum_id, :class_name => 'Forum::Forum', :include => :project 

home_controller.rb

def discussions 
    @project ||= Project.find_by_name 'help' 
    @forums = @project.forums 
    @topics = @project.topics.recent # HERE I AM GETTING ERRORS 
end 

routes.rb

scope :home, :controller => "home", :activity => 'read' do 
get :discussions, :path => '/forums', :service_type => 'public' 
get :forums, :action => "discussions" 
end 

ошибки

uninitialized constant Project::Forum::Topic 
app/controllers/home_controller.rb:46:in `discussions' 
+0

Не могли бы вы указать, какие файлы эти классы определены внутри? Я заметил, что вы также пропустили вызов класса перед именами классов. Это действительно так, как этот код? –

+0

@RyanBigg, Обновлено мой вопрос – 2013-03-07 23:12:13

ответ

2

Я просто answerd через рельсы форум, здесь снова,

В вашем проекте класса модели, изменение ниже пути

OLD: has_many :topics, :class_name=>'Forum::Topic', :through=>:forums

NEW: has_many :topics, :class_name=>'::Forum::Topic', :through=>:forums

он должен работать

+0

спасибо, это работа для меня – 2013-03-09 19:14:01

0

Если вы автозагрузка этого класса (то есть, вы не require его исходного файла), то причина может быть ошибкой Руби autoload возникли проблемы в постоянную автозагрузку вложенных 3 или более раз.

На данный момент я не могу найти свой источник этой информации в Интернете; однако, я помню, что его нужно разрешить с помощью Ruby 2.0, поэтому вы можете исправить его, удалив нужные вам файлы с autoload, добавив require 'project/forum/topic', где вам нужно, или обновить до Ruby 2.0.

+0

Я не поймал вас, я использую Rails 3.2.x – 2013-03-08 00:46:36

+0

Rails не принадлежит к проблеме, которая у меня была, это была проблема Ruby; как вы назвали файлы, которые определяют «Проект», «Форум» и «Тема»? которая является структурой папок, где они находятся? – mdesantis

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