0

我有这个奇怪的错误。启动服务器时一切正常。

我浏览http://lvh.me:3000/admin/topics并正确显示

然后,当我更改任何控制器中的任何内容(甚至只是添加空行)时,rails 会说:

Routing Error
uninitialized constant Admin::TopicsController::Topic

我刷新它,它会显示:

NoMethodError in Admin/topics#index
Showing /Users/john/Code/v2/app/views/admin/topics/index.html.erb where line #12 raised:
undefined method `each' for nil:NilClass

然后当我重新启动服务器时,一切又正常了。如果我更改控制器中的任何内容,那么它将再次发生。

它只发生在这个 url 下。

我的路线是:

  namespace :admin do
    resources :topics do
      resources :comments, :controller => "topic/comments"
    end
    resources :attachments
  end

相关的控制器是:

app/controllers/admin/topics_controller.rb
app/controllers/admin/topic/comments_controller.rb

真的很奇怪,它在第一次正常工作,但如果控制器被更改(即使添加空行)就会中断。可能是评论控制器在主题文件夹下吗?

4

2 回答 2

0

我认为您违反了 Rails 约定,即X::Y::Z应该在以 结尾的路径上找到非 gem 类x/y/z.rb,反之亦然。您可能应该只命名该控制器TopicCommentsController并将其放入app/controllers/admin/topic_comments_controller.rb.

于 2012-04-12T09:29:43.627 回答
0

我将文件夹名称从更改topictopics,问题消失了。不知道为什么,但这可能是惯例被推到了边缘。

于 2012-04-13T04:40:46.233 回答