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 Build a Rails API Coding the API Returning JSON

Justin Black
Justin Black
24,793 Points

Why isnt this passing like it should

This test is seriously defunct.

class MonkeysController < ApplicationController
  before_filter :find_monkey

  def show
    render json: @monkey.as_json(include::bananas)
  end

private
  def find_monkey
    @monkey = Monkey.find(params[:id])
  end
end

this fails.

class MonkeysController < ApplicationController
  before_filter :find_monkey

  def show
    render json: @monkey
  end

private
  def find_monkey
    @monkey = Monkey.find(params[:id]).as_json(include::bananas)
  end
end

this also fails

but yet in my actual code, this passes:

def show
    list = TodoList.find(params[:id])
    render json: list.as_json(include::todo_items)
  end

what gives?

monkeys_controller.rb
class MonkeysController < ApplicationController
  before_filter :find_monkey

  def show
    monkey = Monkey.find(params[:id])
    render json: monkey.as_json(include::bananas)
  end

private
  def find_monkey
    @monkey = Monkey.find(params[:id])
  end
end

1 Answer

Justin Black
Justin Black
24,793 Points

I figured this out, and for those who get stuck despite your code working and copying/pasting and modifying it slightly. the issue was a little bit of whitespace... in this test, they demand there be a space between the two colons. like so:

class MonkeysController < ApplicationController
  before_filter :find_monkey

  def show
    render json: @monkey.as_json(include: :bananas)
  end

private
  def find_monkey
    @monkey = Monkey.find(params[:id])
  end
end

way to go TH, teach me one way then fail that way on the test when it is in fact valid.