为什么第一个元素在我的Rails多选中总是空白,使用嵌入式数组? [英] Why is the first element always blank in my Rails multi-select, using an embedded array?

查看:135
本文介绍了为什么第一个元素在我的Rails多选中总是空白,使用嵌入式数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Rails 3.2.0.rc2 。我有一个 Model ,其中我有一个静态 Array ,我通过一个表单用户可以选择 Array 的子集并将其选择保存到数据库中,并存储在 Model 中的单个列中。我在存储 Array 的数据库列上使用了serialize,并且Rails将用户的选择正确地转换为Yaml(并在读取该列时返回到数组)。我正在使用多选表单输入来进行选择。

我的问题是,按照我目前的方式,一切都按我的预期工作除非用户的子集数组在发送到服务器时始终具有空的第一个元素。



这不是什么大问题,我可以写代码在事实之后将其切掉,但我觉得我只是在制造某种语法错误,因为在我看来,默认的Rails行为在没有任何理由的情况下会故意添加这个空白元素。我一定错过了某些东西,或者忘记禁用某种设置。请帮助我了解我错过了什么(或者指出我有一些很好的文档,这些文档的描述比我在intetubes上找到的更深入)。



MySQL数据库表'models':




  • 包含名为 subset_array 这是一个TEXT字段



类模型包括以下设置:




  • serialize:subset_array

  • ALL_POSSIBLE_VALUES = [value1,value2,value3,。 ..]



编辑模型包含以下输入选项:




  • f.select:subset_array,Model :: ALL_POSSIBLE_VALUES,{},:multiple => true,:selected => @ model.subset_array



从客户端上传到服务器看起来像这样:




  • 假设只选择了value1和value3

  • model=> {subset_array=> [,value1,value3]}



数据库更新如下所示:

$ b'b

  • UPDATE'models'SET'subset_array'='--- \\\
    - \\\\\
    - value1\- value3\\\
    '



正如您所看到的那样, ,数组中的元素被发送并设置在数据库中。我该如何摆脱?是否有我从 f.select 调用中缺少的参数?



非常感谢:) p>

编辑:这是从 f.select 语句生成的HTML代码。它看起来好像有一个隐藏的输入正在产生,这可能是我的问题的原因?为什么在那里?

 < input name =model [subset_array] []type =hiddenvalue> 
发送“验证码”获取 | 15天全站免登陆