2

カテゴリモデルがあり、「FieldModule」というドキュメントが埋め込まれているフォームがあります。これには、「SubFieldModule」というドキュメントが埋め込まれています。

例えば

class Category

  include MongoMapper::Document  
  key :name, String 
  many :field_modules
end

class FieldModule

  include MongoMapper::EmbeddedDocument  
  key :name, String 
  many :sub_field_modules  
end

class SubFieldModule

  include MongoMapper::EmbeddedDocument
  key :name, String  
end

私のコントローラーで私は私が持っているアクションを編集します:

@category = Category.find(params[:id])

3.times do
  @category.field_modules << FieldModule.new()
end

カテゴリに3つのFieldModuleを設定します。

このように各FieldModulesSubFieldModulesに対して同じことを実行できるようにしたい

@category.field_modules.each do |mf| 
  mf << SubFieldModule.new()
end

しかし、それは機能しません。

エラーが発生します:

NoMethodError in Sub categoriesController#edit

undefined method `<<' for #<FieldModule name: nil, _id: $oid4c2b9f594248ce19f000011b>

誰かがこれについて私を助けてくれますか?それから私はそれを1レベル深くする必要があるので同じことをします。

4

1 に答える 1

1

これを試して:

@cat = Category.new(:name => "Blah")

3.times do
  @cat.field_modules << FieldModule.new()
end

@cat.field_modules.each do |mf|
  mf.sub_field_modules << SubFieldModule.new()
end
于 2010-07-03T04:21:14.897 に答える