如果已清空其中的数组,则update_attributes不会删除嵌入的文档

时间:2012-02-16 10:28:55

标签: ruby-on-rails mongomapper

尝试按照此问题中的说明获取用于添加,编辑和删除嵌入文档的表单:Rails + MongoMapper + EmbeddedDocument form help

我主要是为了工作,但是,在编辑文档时,如果通过单击删除链接删除了所有嵌入文档,则传递给控制器​​的params对象根本不包括数组字段,因此{ {1}}忽略它认为它没有被更改,因此根本不会删除嵌入的文档。

还有其他人遇到过这个吗?除了根据具体情况处理它的hacky方式之外,还有一个很好的,简洁的解决方案吗?

1 个答案:

答案 0 :(得分:0)

这更像是一个params问题而不是MongoMapper问题。

建立Rails + MongoMapper + EmbeddedDocument form help ...

中的代码

你可以尝试在所有答案之前添加一个隐藏字段,这样一个数组总会通过参数...

<%= hidden_field_tag 'problem[answers][]' %>

这将在你的参数中出现,如......

{ "problem" => { "answers" => [""] }

但那可能是错误的,所以也许更好的方法就是在update_attributes之前在控制器中执行此操作...

params[:problem][:answers] ||= []