dem*_*and 15 ruby ruby-on-rails ruby-on-rails-3
我正在创建一些自定义异常,如下所示
LIB/exceptions.rb
module Exceptions
class MemberOverFlow < StandardError
end
rescue_from MemberOverFlow do |exception|
redirect_to root_url, :alert => exception.message
end
end
Run Code Online (Sandbox Code Playgroud)
我用来像这样引发异常.
raise Exception::MemberOverFlow"member count overflow"
Run Code Online (Sandbox Code Playgroud)
它给出了以下错误
NoMethodError in MembersController#create
undefined method `MemberOverFlow' for Exception:Class
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我什么是问题
谢谢
ami*_*ena 11
您是否要求控制器中的模块尝试引发异常?
require "exception" #or wherever you have placed the module file
使用:
raise Exception::MemberOverFlow.new("member count overflow")
如果它仍然不起作用,请尝试更改模块"Exception"的名称,因为Exception是Ruby中定义的现有异常类.
没有人特别说出原帖中的错误.下列:
raise Exceptions::MemberOverFlow"member count overflow"
Run Code Online (Sandbox Code Playgroud)
被MemberOverFlow视为一种方法,而不是class它.你需要new在你的MemberOverFlow课上调用这个方法,这就是amit_saxena的答案所指出的.
这个答案解决了这个问题,但我觉得值得指出你在语法上做了什么,这样如果你将来遇到类似的问题你会知道发生了什么.
lib目录的内容不会自动加载到rails 3中,您需要在config/application.rb中指定它们:
config.autoload_paths += %W(#{config.root}/lib)
Run Code Online (Sandbox Code Playgroud)
也许你还没有那样做?
| 归档时间: |
|
| 查看次数: |
12648 次 |
| 最近记录: |