Rails 3.2 – collection_select在我的数组的第一个位置添加空条目

我有一个Ruby on Rails 3.2.13应用程序,我有一个collection_select语句。 collection_select语句位于fields_for语句中,我从collection_select中收集选定的id并使用它们填充另一个表。 我遇到的问题是collection_select语句在数组中添加一个null id条目,用于存储所选id的集合。

以下是我视图中的代码:

   

以下是选择两个选项后数组的外观示例:

 "media_topics_attributes"=>{"0"=>{"topic_id"=>["", "2", "47"], "id"=>"1895"}} 

我认为数组应该只有两个id,“2”和“47”。 null值导致更新嵌套属性时出现问题,因为该错误表明该值不能为空。 当显示存在相关行的行的编辑视图时,将按预期选择并在列表中突出显示collection_select中的正确记录。

如何更改不添加空条目的collection_select语句? 我不允许添加MediaTopic模型上的任何行,其中topic_id等于null。 我已经研究了好几天了。 我发现一个人有一个类似的问题但是这个问题的解决方案都没有解决问题。

任何帮助,将不胜感激。

根据@vinodadhikary,数组中的null条目在Rails 3中按预期工作。我最近在Rails 4中重写了这个应用程序。我完全重写了逻辑,首先使用has_many来关联我的所有表。 我还通过使用collection_select语句替换了fields_for逻辑。 我在第一个{}中添加了include_hidden = false,并且null条目没有出现在数组中。 几天前我问了一个类似的问题,经过大量的搜索,我想出了一个解决方案。 详情请见以下链接。

Rails 4 – 使用collection_select获取具有嵌套属性的中间表的id数组

在更新操作之前,请在控制器中尝试params[:media_topic][:topic_ids].delete("")