Advanced Custom Fields: single-books.php works, books.php does not

Try this below code, also remember you can omit get_template_part( 'content', 'page' ); if you do not want content-page.php template to display your books. You can create your own file like content-book.php and change get_template_part to include your new template.

<?php
/**
 * Template Name: Books
 *
 *
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */

get_header(); ?>

    <div id="primary" class="site-content">
        <div id="content" role="main">
<?php get_posts(array('post_type'=>'books')); ?>
<?php if ( have_posts() ) : ?>

            <?php while ( have_posts() ) : the_post(); ?>

                <h1><?php the_field('book_title'); ?></h1>
                <h2><?php the_field('book_author'); ?></h2>
                <p><?php the_field('pub_year'); ?></p>
                <?php get_template_part( 'content', 'page' ); ?>
                <?php comments_template( '', true ); ?>
            <?php endwhile; // end of the loop. ?>
<?php endif; wp_reset_postdata(); ?>

        </div><!-- #content -->
    </div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>