这些是相关的模型:
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 /测验时我指定的ID的测验
有什么想法吗?非常感谢你的时间
最佳答案 在QuizzesController的索引操作中,您需要添加:
def index
@repository = Repository.find(params[:repository_id])
@quizzes = @repository.quizzes
end
@repository行将根据URL中的参数找到存储库.然后它会找到基于该存储库的所有测验.
然后在您的视图中,您可以在显示它们时循环浏览所有这些测验.
注意
您目前设置路线的方式,您可以在/测验中访问页面,但听起来您似乎没有这个愿望.如果是这种情况,您可以删除资源:来自routes.rb的测验(仅限第二个,而不是嵌套的测验).