Rails技术问题:同模块内的类无法找到,求解决方法
问题解决指南
1. 修正方法调用方式
你的check!方法定义的是关键字参数,调用时必须指定参数名,不能直接传位置参数:
# 错误调用 Math::Calc.check!(5, 5) # 正确调用 Math::Calc.check!(value1: 5, value2: 5)
2. 修复require路径问题
在calc.rb中引入divide.rb时,需要使用正确的文件路径。如果你的项目根目录已加入Ruby加载路径,在/lib/math/calc.rb顶部添加:
require_relative 'calc/divide'
若从项目根目录加载,也可以写:
require 'math/calc/divide'
你之前写的require 'divide'找不到文件,是因为Ruby无法定位到该文件所在目录。
3. 修正代码拼写错误
在Divide类的send!方法里,参数默认值写成了nill,这是拼写错误,应改为nil:
# 错误写法 def send!(value1: nill, value2: nill) # 正确写法 def send!(value1: nil, value2: nil)
4. 修正Divide方法的参数传递
在check!方法中调用Divide.send!时,你传递的是符号:value1和:value2,这会把符号本身传过去,而非方法接收到的变量值,应改为:
# 错误写法 Divide.send!(value1: :value1, value2: :value2) # 正确写法 Divide.send!(value1: value1, value2: value2)
5. 修复Error常量未定义问题
你代码中使用的Error未定义,可自定义错误类或使用Ruby内置StandardError:
# 在calc.rb顶部自定义错误类 module Math module Calc class Error < StandardError; end end end # 然后在check!方法中调用 raise Error.new(message: "value1 is required") unless value1
或直接使用内置错误:
raise StandardError.new(message: "value1 is required") unless value1
内容的提问来源于stack exchange,提问作者A. Vreeswijk
相关产品推荐
相关产品推荐

