rails Error de 3 asociaciones

Tengo una tabla de páginas y un autor de tabla. Cada página pertenece a un autor. También se crearon migraciones para las tablas y modelos. Pero obteniendo este error al usarlo en forma:

NoMethodError in Pages#new

Showing C:/rorapp/app/views/pages/_form.html.erb where line #1 raised:

undefined method `build' for nil:NilClass
Extracted source (around line #1):

1: <%= form_for(@page, @page.author.build) do |f| %>
2:   <% if @page.errors.any? %>
3:     <div id="error_explanation">
4:       <h2><%= pluralize(@page.errors.count, "error") %> prohibited this post from being saved:</h2>
Trace of template inclusion: app/views/pages/new.html.erb

Rails.root: C:/rorapp

Application Trace | Framework Trace | Full Trace
app/views/pages/_form.html.erb:1:in `_app_views_pages__form_html_erb___998576952_54480300'
app/views/pages/new.html.erb:2:in `_app_views_pages_new_html_erb__638997451_40207104'
Request

Parameters:

None
Show session dump

Show env dump

Response

Headers:

None

Aquí está mi archivo modelo para el autor:

class Author < ActiveRecord::Base

has_one :page
end

Y modelo de página:

class Page < ActiveRecord::Base

validates :title, :presence => true

belongs_to :author
end

Y aquí está el fragmento de la forma del modelo:

<%= form_for(@page, @page.author.build) do |f| %>
  <% if @page.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@page.errors.count, "error") %> prohibited this post from being saved:</h2>

      <ul>
      <% @page.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <p>
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </p>

¿Alguna idea de cómo seguir adelante?

Gracia

EDIT - 1

Aquí está mi método de acción llamadonew :

def new
    @page = Page.new
    @page.build_author

  end

Y aquí está la forma que está representando:

<%= form_for(@page) do |f| %>
  <% if @page.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@page.errors.count, "error") %> prohibited this post from being saved:</h2>

      <ul>
      <% @page.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <p>
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </p>
   <p>
    <%= f.label :body %><br />
    <%= f.text_area :body %>
  </p>
   <p>
    <%= f.label :author %><br />
    <%= f.text_field :author %>
  </p>
   <p>
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </p>
   <p>
    <%= f.label :reference %><br />
    <%= f.select(:reference,[['google',1],['yahoo',2],['MSN',3],['Ask',4]]) %>
  </p>
   <%= f.submit "Submit" %>
<% end %>
EDIT - 2

Aquí está mi código de controlador:

class PagesController < ApplicationController

  def index
    @total = Page.count
    @pages = Page.find(:all)
  end

  def show
    @page = Page.find(params[:id])
  end

  def new
    @page = Page.new
    @page.build_author

  end

  def create
    @page = Page.new(params[:page])
    if @page.save
        redirect_to pages_path, :notice => "The data has been saved!"
    else
        render "new"
    end
  end 

  def edit
    @page = Page.find(params[:id])


  end

  def update
    @page = Page.find(params[:id])

        if @page.update_attributes(params[:page])
            redirect_to pages_path, :notice => "Your post has been updated!"
        else
            render "edit"
        end 

  end 

  def destroy
    @page = Page.find(params[:id])
    @page.destroy
    redirect_to pages_path, :notice => "Your page has been deleted!"
  end
end

Respuestas a la pregunta(4)

Su respuesta a la pregunta