1. ホーム
  2. ruby

[解決済み】未定義のメソッド(NoMethodError)ruby

2022-02-21 07:42:30

質問

以下のようなエラーメッセージがずっと表示されます。

text.rb:2:in `<main>': undefined method `choices' for main:Object (NoMethodError)

しかし、なぜ私のメソッドが "undefined" になるのか、理解できないようです。

puts "Select [1] [2] [3] or [q] to quit"; users_choice = gets.chomp 
choices(users_choice)

def choices (choice)    
   while choice != 'q'      
        case choice

        when '1' 
            puts "you chose one!"

        when '2'
            puts "you chose two!"

        when '3'
            puts "you chose three!"
        end     
   end 
end

解決方法は?

メソッドを呼び出しているためです。 choices 定義する前に 以下のようにコードを書いてください。

puts "Select [1] [2] [3] or [q] to quit"
users_choice = gets.chomp 

def choices (choice)    
  while choice != 'q'      
    case choice
    when '1' 
      break  puts "you chose one!"
    when '2'   
      break puts "you chose two!"
    when '3'
      break  puts "you chose three!"
    end     
  end 
end

choices(users_choice)

私は break を終了するために while ループになります。そうしないと、無限ループになります。