这些是相关模型:
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 的测验
关于为什么的任何想法?非常感谢您的时间
最佳答案
在 QuizzesController
的索引操作中,您需要添加:
def index
@repository = Repository.find(params[:repository_id])
@quizzes = @repository.quizzes
end
@repository
行将根据您的 URL 中的参数找到存储库。然后它将找到基于该存储库的所有测验。然后在您的 View 中,您可以在显示它们时循环浏览所有这些测验。
注意
根据您当前设置路由的方式,您可以访问
/quizzes
上的页面,但听起来您并不希望这样做。如果是这种情况,您可以从 resources: quizzes
中删除 routes.rb
(仅第二个,而不是嵌套的)。