Ошибка с вложенными формами в Mongoid - PullRequest
0 голосов
/ 14 ноября 2010

Я использую Mongoid на Rails 3 и пытаюсь создать вложенную форму. Проблема, с которой я сталкиваюсь, заключается в том, что когда я использовал метод accept_nested_attributes_for, я получаю следующее сообщение об ошибке:

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'

Ответы [ 2 ]

0 голосов
/ 03 декабря 2010

Эта проблема была исправлена ​​недавним запросом pull, который я нашел в Github подмигиванием.

0 голосов
/ 14 ноября 2010

Рельсы 3 следуют за ActiveModel, у которой есть определенный контракт, который должен следовать ActionPack (и ActionView).

См. этот пост , в котором Йеуда Кац подробно объясняет это в разделе ActiveModel. Также обратитесь к ActiveModel ChangeLog , который имеет ссылку на метод.

Проще говоря, ваша модель должна реализовывать определенные методы, чтобы играть хорошо с остальными приложениями rails 3. И этот метод является одним из них.

ActiveRecord 3 просто следует этому контракту. Если вы выбрасываете его и используете свой собственный ORM, такой как Mongoid, если фреймворк не делает этого (например, mongoid), вы должны сделать это явно. couch_potato, который является аналогичной оболочкой для couchdb, делает то же самое.

...