2010-11-13 19 views
0

我在Rails 3上使用Mongoid並嘗試構建一個嵌套窗體。我遇到的問題是,當我用accept_nested_attributes_for方法,我得到這個錯誤信息:與Mongoid發生嵌套窗體的錯誤

undefined method `persisted?' for []:Array 

是其他任何人有問題,在Mongoid嵌套形式?我能做些什麼來解決它?

編輯:更多關於錯誤。這是完整的痕跡。

mongoid (2.0.0.beta.19) lib/mongoid/criteria.rb:156:in `send' 
mongoid (2.0.0.beta.19) lib/mongoid/criteria.rb:156:in `method_missing' 
mongoid (2.0.0.beta.19) lib/mongoid/associations/references_many.rb:113:in `send' 
mongoid (2.0.0.beta.19) lib/mongoid/associations/references_many.rb:113:in `method_missing' 
actionpack (3.0.1) lib/action_view/helpers/form_helper.rb:1280:in `fields_for_nested_model' 
actionpack (3.0.1) lib/action_view/helpers/form_helper.rb:1273:in `fields_for_with_nested_attributes' 
actionpack (3.0.1) lib/action_view/helpers/form_helper.rb:1155:in `fields_for' 
simple_form (1.2.2) lib/simple_form/action_view_extensions/builder.rb:96:in `simple_fields_for' 
app/views/users/profile.html.haml:16:in `_app_views_users_profile_html_haml__599717908_2187897020_0' 
+0

Mongoid完全支持ActiveModel,所以問題不存在。即使使用ActiveRecord實現嵌套表單也有點棘手。你可以發佈你用於模型和表單的代碼嗎?如果沒有確切地看到你如何實施關聯和表單,很難提出解決方案。 – bowsersenior 2010-11-18 01:01:25

回答

0

Rails 3遵循ActiveModel,它具有ActionPack(和ActionView)預期遵循的特定合約。

請參閱this post,其中Yehuda Katz在ActiveModel部分對此進行了詳細解釋。另請參閱ActiveModel ChangeLog,其中提及該方法。

簡而言之,您的模型必須實現某些方法才能與其餘的rails 3應用程序一起玩。而這種方法就是其中之一。

ActiveRecord 3只是遵循這個合同。如果你拋棄它並使用像Mongoid一樣的自己的ORM,除非框架這樣做(如mongoid情況),你必須明確地做到這一點。與couchdb類似的包裝的couch_potato完全一樣。