A couple things:

1. This method with execute a lot of SQL queries. If I have checked out 5 books, it will execute 6 queries in total (not including the queries to google books api).  This could be executed with *one* query. Investigate the ActiveRecord rails [guide](http://guides.rubyonrails.org/active_record_querying.html#joining-tables) about joining tables.

2. Instead of creating an empty array and shoveling items to it, you can use `map`. So, instead of
````ruby
@book_ids = []
@checkouts = Checkout.where(user_id: session[:user_id])
@checkouts.each do |checkout|
    @book_ids << checkout.book_id
end
```
you can use `map`
````ruby
@book_ids = Checkout.where(user_id: session[:user_id]).map do |checkout|
     checkout.book_id
end
```
or even better...
````ruby
@book_ids = Checkout.where(user_id: session[:user_id]).map(&:book_id)
```
3. It looks like the only instance variable being used in your view (`mybooks`) is `@book_titles`. This means that you don't been to be using instance variables for the rest of the variables in this action. It could be...
```ruby
def mybooks
    book_ids = []
    checkouts = Checkout.where(user_id:session[:user_id])
    checkouts.each do |checkout|
      book_ids << checkout.book_id
    end
    @book_titles = []	
    book_ids.each do |book_id|
      book = Book.find_by_id(book_id)
      @book_titles << book.get_title
    end
  end
```