4

这些是相关模型:

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 时指定的 ID 的测验

关于为什么的任何想法?非常感谢您的时间

4

1 回答 1

3

在您的索引操作中,您QuizzesController需要添加:

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

@repository行将根据您的 URL 中的参数找到存储库。然后它将根据该存储库找到所有测验。

然后在您的视图中,您可以在显示它们时循环浏览所有这些测验。

笔记

您当前设置路线的方式,您可以访问页面,/quizzes但听起来您不希望这样做。如果是这种情况,您可以resources: quizzes从您的routes.rb(仅第二个,而不是嵌套的)中删除。

于 2012-04-11T00:23:51.167 回答