Вложенные маршруты, показывающие все записи вместо записей экземпляра
Вот соответствующие модели:
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 ответ:
В действие индекса Вашего
QuizzesController
нужно добавить:def index @repository = Repository.find(params[:repository_id]) @quizzes = @repository.quizzes end
Строка
@repository
найдет репозиторий на основе параметра в вашем URL. Затем он найдет все тесты, основанные на этом хранилище.Затем, по вашему мнению, вы можете перебирать все эти тесты, когда вы их показываете.
Примечание
В настоящее время у вас есть настройка маршрутов, вы можете получить доступ к странице по адресу
/quizzes
, но, похоже, у вас нет желания этого делать. Если это в этом случае вы можете удалитьresources: quizzes
из вашегоroutes.rb
(только второй, а не вложенный).