2011-02-27 34 views
0

我有3个模型 - 成员,相册和图像。命名空间模型:未初始化的常量成员:: Album :: Image(NameError)

的member.rb文件是在/ app /模型目录:

class Member < ActiveRecord::Base 

has_many :albums 

的album.rb文件是在/ app /模型/部件目录:

class Member::Album < ActiveRecord::Base 

has_many :images 

图像.RB文件在/ app /模型/件/专辑目录:

class Member::Album::Image < ActiveRecord::Base 

在我的routes.rb文件,我有:

resources :members do 

    resources :albums, :controller => 'members/albums' do 

     resources :images, :controller => 'members/albums/images',:only => [:new, :create, :destroy] do 
      get :edit, :on => :collection 
      put :update, :on => :collection 
     end 
    end 
end 

但是,当我尝试加载'/ members/1/albums'(和其他几个地方),我得到错误未初始化常数Member :: Album :: Image。

我甚至尝试添加:

config.autoload_paths += %W(#{config.root}/app/models/member/album) 

config.autoload_paths += Dir["#{config.root}/app/models/**/"] 

我的config/application.rb中的文件(并重新启动服务器),以确保嵌套在子目录中的我的所有文件内'app/models'文件夹正在加载,但我仍然得到这个错误。

回答

0

你在做什么实际上并没有在控制器/模型中使用命名空间。这只是一个嵌套的路线。你迫使Rails在你的路由中使用命名空间控制器。取而代之的只是使用:

resources :members do 
    resources :albums do 
    resources :images, :only => [:new, :create, :destroy] do 
     get :edit, :on => :collection 
     put :update, :on => :collection 
    end 
    end 
end 

然后你不需要在你的控制器或模型中打扰命名空间。

注意:建议您不要嵌套超过2深的路线。你目前在3,它产生一些漂亮的网址,如http://example.com/members/42/albums/100/images/new

相关问题