Вложенные маршруты, показывающие все записи вместо записей экземпляра


Вот соответствующие модели:

class Repository < ActiveRecord::Base
   has_many :quizzes, :dependent => :destroy
   has_one :key, :dependent => :destroy

   accepts_nested_attributes_for :key, :quizzes
end

class Quiz < ActiveRecord::Base
   belongs_to :repository
   has_many :topics, :dependent => :destroy

   accepts_nested_attributes_for :topics
end

Это в моих маршрутах:

GqAPI::Application.routes.draw do
  resources :repositories do
    resources :quizzes
  end

  resources :quizzes

  resources :keys

  resources :topics

  resources :questions
end

Когда я пробую эту конфигурацию, я получаю все тесты в базе данных, а не только те, которые я указываю для идентификатора, когда я пытаюсь перейти в / repositories/1 / quizzes

Есть идеи, почему? Большое спасибо за ваше время

1 4

1 ответ:

В действие индекса Вашего QuizzesController нужно добавить:

def index
  @repository = Repository.find(params[:repository_id])
  @quizzes = @repository.quizzes
end

Строка @repository найдет репозиторий на основе параметра в вашем URL. Затем он найдет все тесты, основанные на этом хранилище.

Затем, по вашему мнению, вы можете перебирать все эти тесты, когда вы их показываете.

Примечание

В настоящее время у вас есть настройка маршрутов, вы можете получить доступ к странице по адресу /quizzes, но, похоже, у вас нет желания этого делать. Если это в этом случае вы можете удалить resources: quizzes из вашего routes.rb (только второй, а не вложенный).