Rails:定义帮助程序错误的预期帮助程序?

时间:2010-07-06 20:12:26

标签: ruby-on-rails

在本地访问我的Rails应用程序时,加载任何页面时出现以下错误:

/!\ FAILSAFE /!\  Tue Jul 06 15:08:17 -0500 2010
Status: 500 Internal Server Error
Expected /my_rails_app/app/helpers/admin/article_categories_helper.rb to define Admin::ArticleCategoriesHelper

如果我按照full trace,我会在我的应用程序控制器中找到这一行:

helper :all

如果我注释掉那一行,那么一切似乎都很好。

此外,这是我的/admin/article_categories_helper.rb文件的内容:

module Admin::ArticleCategoriesHelper
end

那么,任何想法可能导致这种情况以及如何解决它?

4 个答案:

答案 0 :(得分:1)

您的文件应命名为

/admin/article_categories_helper.rb

而不是

/admin/articles_categories_helper.rb

答案 1 :(得分:1)

如果您尝试了Seriousken的答案并获得'xxxx不是模块',那么将其更改为一个类。 以下对我有用。

我有:/helpers/member/finance/bank_batches_helper.rb

其中我有:

module Member::Finance::BankBatchesHelper

  def some_method
    # ...
  end
end

只需添加上面的父类,如下所示:

class Member
  class Finance
  end
end

module Member::Finance::BankBatchesHelper

  def some_method
    # ...
  end
end

希望这有帮助。

答案 2 :(得分:0)

该错误通常意味着加载有问题的文件时遇到了一些问题。是否在此时定义了Admin模块?你可以尝试:

module Admin
  module ArticleCategoriesHelper
  end
end

代替。无论Admin是否存在,这都将有效。

最简单的解决方案是完全删除文件,因为您似乎没有将它用于任何事情。

答案 3 :(得分:0)

我有同样的问题,但对我来说,这是在将Rails项目从Ruby 1.8.7升级到1.9.2时引起的。在1.9.2中,case语句的语法发生了变化。简写:(冒号)不再使用。相反,您必须使用then关键字。

# works in 1.8.x
case numtype
  when 'smallint' : 4

上面的代码必须更改为

# works in 1.9.2
case numtype
  when 'smallint' then 4

当我在助手中修复所有案例陈述时,我不再遇到此错误。