嵌套路线显示所有记录而不是实例记录

问题描述:

这些都是相关机型:嵌套路线显示所有记录而不是实例记录

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

有关为什么?非常感谢您的时间

在index动作你QuizzesController您需要添加:

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

@repository线会发现根据您的网址参数的存储库。然后它会根据该存储库查找所有测验。

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

注意

你现在有你的路由设置的方式,你必须在/quizzes访问页面的能力,但它听起来就像你做这个没有欲望。如果是这种情况,您可以从routes.rb中删除resources: quizzes(仅限第二个,而不是嵌套的)。

+0

谢谢,这个伎俩。但是,您的建议让我意识到我正在做这一切都是错误的......再次感谢! – tylermauthe 2012-04-11 00:36:00

+0

很高兴我能够帮助。这是一个学习过程。可能想在http://codeschool.com查看Rails for Zombies。当我第一次出发时,我发现它非常有用。 – ardavis 2012-04-11 00:37:52

+0

谢谢,我正在查看它! – tylermauthe 2012-04-11 00:56:21