# Undefined method \`string'

**URL:** <https://www.ruby-forum.com/t/undefined-method-string/75869>\
**Category:** Ruby\
**Created:** [November 13, 2006, 11:08pm UTC](https://www.ruby-forum.com/t/undefined-method-string/75869 "2006-11-13T23:08:04Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![comforteagle](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/dfb087/32.png) [@comforteagle](https://www.ruby-forum.com/u/comforteagle)\
**Post date:** [November 13, 2006, 11:08pm UTC](https://www.ruby-forum.com/t/undefined-method-string/75869/1 "2006-11-13T23:08:04Z")

</div>

Why does this work:

require ‘rubygems’  
require ‘rubyful\_soup’

sourceFile = ‘lists.php’  
desFile = ‘parsedtext.txt’

open(sourceFile).each { |x|  
soup = BeautifulSoup.new(x)  
puts soup.a  
}

but adding .string a la:

require ‘rubygems’  
require ‘rubyful\_soup’

sourceFile = ‘lists.php’  
desFile = ‘parsedtext.txt’

open(sourceFile).each { |x|  
soup = BeautifulSoup.new(x)  
puts soup.a.string  
}

results in:  
undefined method `string’ for nil:NilClass (NoMethodError) ??

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![comforteagle](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/dfb087/32.png) [@comforteagle](https://www.ruby-forum.com/u/comforteagle)\
**Post date:** [November 13, 2006, 11:20pm UTC](https://www.ruby-forum.com/t/undefined-method-string/75869/2 "2006-11-13T23:20:56Z")

</div>

Comfort E. wrote:

> soup = BeautifulSoup.new(x)
> 
> open(sourceFile).each { |x|  
> soup = BeautifulSoup.new(x)  
> puts soup.a.string  
> }
> 
> results in:  
> undefined method `string’ for nil:NilClass (NoMethodError) ??

Because soup.a is nil?  
As the interpreter obediently informs you of.

“puts soup.a” works because to\_s is defined on nil to return the empty  
string.

David V.
