嵌套资源

时间:2011-08-06 04:33:17

标签: ruby-on-rails-3

我想在视图页面上一起显示Brand和Subbrand。我在尝试声明时收到错误:

class BrandsController < ApplicationController

def index
  @brands = Brand.all
  @subbrands = @brands.subbrands #error is coming from this line

错误:

undefined method `subbrands' for #<Array:0x9af1898>

对于我的生活,我似乎无法实现这一点!

我最初在这篇文章中发布了我的问题: Undefined method

我试图将逻辑放入控制器中,看看是否有帮助,但我仍然得到错误。模型和路由的详细信息可以在我的原始帖子中找到。

请帮忙!

1 个答案:

答案 0 :(得分:0)

@brands是一个数组,而不是一个ActiveRecord对象,因此您无法直接在其上调用subbrands关联。由于您正在调用Brand.all,并且我认为所有Subbrand项都与Brand相关联,因此您也可以单独查询所有Subbrand个对象:

@brands = Brand.all
@subbrands = Subbrand.all

但是,如果您只想获得一部分品牌,那么您可以这样做。 (第二行查询subbrands中包含brand_id的所有@brands

@brands = Brand.where(...)
@subbrands = Subbrand.where(:brand_id => @brands.collect(&:id))