Ruby Build a Rails API Coding the API Returning JSON

Justin Black
Justin Black
24,266 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,266 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.