# Why "NoMethodError" occurs

**URL:** <https://www.ruby-forum.com/t/why-nomethoderror-occurs/104539>\
**Category:** Ruby\
**Created:** [May 19, 2007, 4:07am UTC](https://www.ruby-forum.com/t/why-nomethoderror-occurs/104539 "2007-05-19T04:07:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![gao\_bo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/4af34b/32.png) [@gao\_bo](https://www.ruby-forum.com/u/gao_bo)\
**Post date:** [May 19, 2007, 4:07am UTC](https://www.ruby-forum.com/t/why-nomethoderror-occurs/104539/1 "2007-05-19T04:07:47Z")

</div>

hi, everyone  
today i typed the code below in my IDE

class Song  
attr\_reader :name, :artist, :duration  
attr\_writer :duration

def initialize(name, artist, duration)  
@name = name  
@artist = artist  
@duration = duration  
end

def durationInMinutes  
@duration/60.0  
end

def durationInMinutes=(value)  
@duration = (value \* 60).to\_i  
end  
end

class Song  
def to\_s  
“song: #{@name}–#{@artist} (#{@duration})”  
end  
end

aSong = Song.new(“hello”, “zhutou”,“332”)

puts aSong.to\_s  
puts aSong.durationInMinutes

And i tried to run it, but the error occured:

song: hello–zhutou (332)  
song.rb:12:in `durationInMinutes': undefined method`/’ for “332”:String  
(NoMethodError)  
from song.rb:29

Why?

Thanks!

---

<div class="post-metadata">

**Author:** ![gao\_bo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/4af34b/32.png) [@gao\_bo](https://www.ruby-forum.com/u/gao_bo)\
**Post date:** [May 19, 2007, 4:17am UTC](https://www.ruby-forum.com/t/why-nomethoderror-occurs/104539/2 "2007-05-19T04:17:47Z")

</div>

U passed “332” as a string so it was stored as a string. Take the  
quotes off 332 or better, in ur init, say @duration=duration.to\_i

Mike

---

<div class="post-metadata">

**Author:** ![gao\_bo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/4af34b/32.png) [@gao\_bo](https://www.ruby-forum.com/u/gao_bo)\
**Post date:** [May 19, 2007, 4:28am UTC](https://www.ruby-forum.com/t/why-nomethoderror-occurs/104539/3 "2007-05-19T04:28:48Z")

</div>

that make sense  
thanks
