You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:10:25