嵌套路线显示所有记录而不是实例记录
问题描述:
这些都是相关机型:嵌套路线显示所有记录而不是实例记录
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
(仅限第二个,而不是嵌套的)。
谢谢,这个伎俩。但是,您的建议让我意识到我正在做这一切都是错误的......再次感谢! – tylermauthe 2012-04-11 00:36:00
很高兴我能够帮助。这是一个学习过程。可能想在http://codeschool.com查看Rails for Zombies。当我第一次出发时,我发现它非常有用。 – ardavis 2012-04-11 00:37:52
谢谢,我正在查看它! – tylermauthe 2012-04-11 00:56:21