неинициализированная константа model1 ::model2 при попытке извлечения дочерних записей

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

У меня есть две модели, одна для страниц, а другая для авторов.

У меня почти получилось показать, какому автору принадлежат страницы, но я продолжаю получать сообщение об ошибке, говорящее:

 uninitialized constant Page::Authors
  

Я определил метод для авторов в моем контроллере страниц @pages = @author.pages и не уверен, правильный ли он. это мой код для моих контроллеров.

 class PagesController < ApplicationController
  def index
    @pages = Page.find(:all, :order => 'created_at DESC')
  end

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

  def new
    @page = Page.new
  end

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

  def create
    @page = Page.new(params[:page])

      if @page.save
          redirect_to(@page, :notice => 'Page was successfully created.')
      else
          render :action => "new"
      end
  end

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

      if @page.update_attributes(params[:page])
        redirect_to(@page, :notice => 'Page was successfully updated.')
      else
        render :action => "edit"
      end
  end

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

  def author
   @pages = @author.pages
  end
end
  

И вот мой авторский контроллер:

 class AuthorsController < ApplicationController
  def index
    @authors = Author.find(:all, :order => 'created_at DESC')
  end

  def show
    @author = Author.find(params[:id])
  end

  def new
    @author = Author.new
  end

  def edit
    @author = Author.find(params[:id])
  end

  def create
    @author = Author.new(params[:author])

      if @author.save
        redirect_to(@author, :notice => 'Author was successfully created.') 
      else
        render :action => "new" 
    end
  end

  def update
    @author = Author.find(params[:id])

      if @author.update_attributes(params[:author])
       redirect_to(@author, :notice => 'Author was successfully updated.') 
      else
        render :action => "edit" 
    end
  end

  def destroy
    @author = Author.find(params[:id])
    @author.destroy
  end

  def author_id
    @author = @pages.author
  end
end
  

Я просто хочу показать, кто создал страницы, я использую select из формы, чтобы получить автора, который уже был введен в базу данных. При создании новой страницы выбирается список выбора и вводится содержимое, а затем, когда вы показываете новый или показываете шаблон, возникает ошибка.

В моих моделях я указал belongs_to:author и has_many:pages.

Я близок.

Любые идеи были бы замечательными. Спасибо

Комментарии:

1. Как примечание, <code> не работает в StackOverflow. Вместо этого просто сделайте отступ с четырьмя пробелами.

Ответ №1:

Чего здесь не хватает, так это трассировки стека, которая показывает, где используется рассматриваемая строка. Часто совершается ошибка ссылки на Authors класс вместо фактического Author и в конечном итоге возникают ошибки, подобные этой. Ничто из того, что вы вставили, не кажется проблематичным таким образом.

Если Author has_many :pages и Page belongs_to :author , то это должно сработать.