在命名空间中的Ruby on Rails模型在控制器中找不到

我是rails的新手,无法弄清楚这个问题……

我有一个控制器

Admin::Blog::EntriesController 

在app / controllers / admin / blog / entries_controller.rb中定义

我有一个名为的模型

 Blog::Entry 

在app / model / blog / entry.rb中定义

当我尝试从控制器访问我的模型时,我从这一行得到一个"uninitialized constant Admin::Blog::EntriesController::Blog"

 @blog_entries = Blog::Entry.find(:all) 

显然,它没有正确找到名称空间,这是奇怪的,因为根据我所读到的,我已经使用正确的语法将我的模型放在正确的文件夹中。

关于如何解决这个问题的任何想法?

谢谢

尝试:

 @blog_entries = ::Blog::Entry.find(:all) 

它目前正在寻找错误的课程。 在Blog之前使用::将强制它从顶层看。

现在是2011年,我们处于Rails 3.1领域,但这个问题仍然存在。 我刚刚使用引用非命名空间模型的命名空间控制器遇到它, 但只有当数据库中没有该模型的行时!

用::前缀模型名称修复问题。

您可以使用实现自定义表名

 set_table_name('foo') 

在你的模型的顶部。

对于多个名称空间,您可能可以逃脱使用

 polymorphic_path(@the_object) 

生成你的url,因为它做了更基本的推理(至少在我的经验中,也许form_for在引擎盖下使用它)。

是的,从查看代码form_for开始使用polymorphic_path。