Ruby NoMethod-未定义的方法错误,即使已定义该方法

Ruby NoMethod-未定义的方法错误,即使已定义该方法,ruby,Ruby,当我在一个特定的方法结束后定义一个方法时,我得到了一个无方法-方法未定义的错误。在此之前定义的方法有一个if..else语句块,该语句块可能在此处产生问题 我尝试过在问题解决方法之前定义所提到的方法,在这种情况下,我的方法工作正常。但是,如果在该特定方法之后定义了任何方法,则会得到相同的错误消息 def显示板 放置{board[0]}{board[1]}{board[2]} 放置------ 放置{board[3]}{board[4]}{board[5]} 放置------ 放置{board[6

当我在一个特定的方法结束后定义一个方法时,我得到了一个无方法-方法未定义的错误。在此之前定义的方法有一个if..else语句块,该语句块可能在此处产生问题

我尝试过在问题解决方法之前定义所提到的方法,在这种情况下,我的方法工作正常。但是,如果在该特定方法之后定义了任何方法,则会得到相同的错误消息

def显示板 放置{board[0]}{board[1]}{board[2]} 放置------ 放置{board[3]}{board[4]}{board[5]} 放置------ 放置{board[6]}{board[7]}{board[8]} 终止 def输入到indexpos pos=pos.to_i-1 终止 def有效移动板,位置 如果位置介于?0,8之间 如果电路板[pos]== 返回真值 其他的 返回错误 终止 其他的 返回错误 终止 def移动板,位置,类型 线路板[pos]={type} 终止 终止 理想情况下,它应该通过所有测试用例。但我有一个特别的错误:

1) ./lib/turn.rb #move allows "X" player in the bottom right and "O" in the top left
     Failure/Error: move(board, 0, "O")
     NoMethodError:
       undefined method `move' for #<RSpec::ExampleGroups::LibTurnRb::Move:0x0000000001db90d8>
     # ./spec/turn_spec.rb:70:in `block (3 levels) in <top (required)>'
你必须关闭你的有效移动?方法之前声明新方法移动

如果您在另一个方法中声明move方法,则在主程序中不可见。

您的移动是在valide_move中定义的吗?也许可以尝试更好的代码编辑器美化:

def有效移动板,位置 如果位置介于?0,8之间 如果电路板[pos]== 返回真值 其他的 返回错误 终止 其他的 返回错误 终止 def移动 线路板[pos]={type} 提出 终止 终止
如果您正确缩进代码,这样的问题就更容易理解了。@TomLord我同意!我也同意,非常抱歉和感谢!
def valid_move?(board, pos)
  if pos.between?(0,8)
    if board[pos] == " "
      return true
    else
      return false
    end
  else
    return false
  end
end

def move(board, pos, type)
  board[pos] = "#{type}"  
end