Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Ruby

Im having many errors, on the viewing todo items part 2

I get different errors after running the test

1) Viewing todo items displays the title of the todo list Failure/Error: click_link "List Items" ActionView::Template::Error: undefined method todo_items' for #<TodoList:0x007fcb3f35ec08> # ./app/views/todo_items/index.html.erb:5:inapp_views_todo_items_index_html_erb__3528535529875335308_70255457779520' # ./spec/features/todo_items/index_spec.rb:9:in block in visit_todo_list' # ./spec/features/todo_items/index_spec.rb:8:invisit_todo_list' # ./spec/features/todo_items/index_spec.rb:14:in `block (2 levels) in <top (required)>'

2) Viewing todo items displays item content when a todo list has items Failure/Error: todo_list.todo_items.create(content: "Milk") NoMethodError: undefined method todo_items' for #<TodoList:0x007fcb3f3241e8> # ./spec/features/todo_items/index_spec.rb:26:inblock (2 levels) in <top (required)>'

3) Viewing todo items displays no items when a todo list is empty Failure/Error: click_link "List Items" ActionView::Template::Error: undefined method todo_items' for #<TodoList:0x007fcb3f2a42e0> # ./app/views/todo_items/index.html.erb:5:inapp_views_todo_items_index_html_erb__3528535529875335308_70255457779520' # ./spec/features/todo_items/index_spec.rb:9:in block in visit_todo_list' # ./spec/features/todo_items/index_spec.rb:8:invisit_todo_list' # ./spec/features/todo_items/index_spec.rb:21:in `block (2 levels) in <top (required)>'

My Code is

todo_items_controller.rb

class TodoItemsController < ApplicationController def index @todo_list = TodoList.find(params[:todo_list_id]) end end

index.html.erb

class TodoItemsController < ApplicationController def index @todo_list = TodoList.find(params[:todo_list_id]) end end

index_spec.rb

require 'spec_helper'

describe "Viewing todo items" do let!(:todo_list) { TodoList.create(title: "Grocery list", description: "Groceries") }

def visit_todo_list(list) visit "/todo_lists" within "#todo_list_#{list.id}" do click_link "List Items" end end

it "displays the title of the todo list" do visit_todo_list(todo_list) within("h1") do expect(page).to have_content(todo_list.title) end end

it "displays no items when a todo list is empty" do visit_todo_list(todo_list) expect(page.all("ul.todo_items li").size).to eq(0) end

it "displays item content when a todo list has items" do todo_list.todo_items.create(content: "Milk") todo_list.todo_items.create(content: "Eggs")

visit_todo_list(todo_list)

expect(page.all("ul.todo_items li").size).to eq(2)

within "ul.todo_items" do
  expect(page).to have_content("Milk")
  expect(page).to have_content("Eggs")
end

end end

Maciej Czuchnowski
Maciej Czuchnowski
36,440 Points

ivan quevedo was the answer below helpful? If so, please indicate that by selecting it as Best Answer. If not, please elaborate more so that we could help you further.

1 Answer

J Scott Erickson
J Scott Erickson
11,883 Points

I had a similar issue when I pulled down some of their code and changed the html.erb file for viewing todo list items without thinking about how it would affect my testing. You need to update your testing (likely) to the new layout. Which is in table format rather than in an unordered list. Try doing it without pulling their spec files, Its good practice.