Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Ruby Ruby Booleans Build a Simple Todo List Program Finding Array Items

Andrew Insley
Andrew Insley
7,014 Points

Won't return nil, and can' understand why?

I am stuck with this problem, I know what I want the code to do and think I have cracked it but I keep getting a message saying that it won't return "nil". I think that the code that I have put in should get it to return nil with the

else return nil

Please help?

todo_list.rb
class TodoList
  attr_reader :name, :todo_items

  def initialize(name)
    @name = name
    @todo_items = []
  end

  def add_item(name)
    todo_items.push(TodoItem.new(name))
  end

  def find_index(name)
    index = 0
    found = true
    todo_items.each do |todo_item|
      if todo_item.name == name
      end
      index += 1
      break if found
    end
    if found
      return index
    else
      return  nil
    end
  end

  end

1 Answer

Seth Reece
Seth Reece
32,867 Points

Hi Andrew,

It looks like you are setting found to true in your find_index method. There is no conditional that will set it to false so it will always return true. e.g.

def find_index(name)
    index = 0
    found = false
    todo_items.each do |todo_item|
      if todo_item.name == name
        found = true
        break
      end
      index += 1
    end
    if found
      return index
    else
      return nil
    end
  end

Seth is right. The code return nil will never be executed.