3

uninitialized constant Project::Forum::Topic

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

ルート.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'
4

2 に答える 2

2

Railsフォーラムで回答しました。ここでも、

プロジェクトモデルクラスで、以下の方法で変更します

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

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

動作するはずです

于 2013-03-08T17:54:43.483 に答える
0

そのクラスを自動ロードする場合(つまり、requireそのソースファイルを自動ロードしない場合)、原因は、autoload3回以上ネストされた定数の自動ロードに問題があるRubyのバグである可能性があります。

現時点では、インターネット上でこの情報のソースを見つけることができません。ただし、Ruby 2.0で解決する必要があることを思い出します。修正すると、必要なファイルを削除したり、必要な場所をautoload追加したり、 Ruby2.0にrequire 'project/forum/topic'アップグレードしたりできます。

于 2013-03-07T23:54:52.843 に答える