以rails形式提交数组元素

时间:2013-09-04 11:30:21

标签: ruby-on-rails forms postgresql ruby-on-rails-4

我有一个邮资表,其中的费率列是使用postgresql的数组类型。 该数组包含3个值,例如[1.99,2.99,5.99]。 我无法弄清楚如何正确提交表单,我想为数组的每个元素显示一个字段。

我当前的非工作代码是;

    = form_for [:admin,@postage] do |f|
      .field-box
        = f.label :name
        = f.text_field :name
        = f.label "UK"
        = text_field_tag "rate[]"
        = f.label 'EU'
        = text_field_tag "rate[]"
        = f.label "Rest of World"
        = text_field_tag "rate[]"

表单在参数中传递但未保存到数据库

Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxx=", "postage"=>{"name"=>"Item1"}, "rate"=>["1.99","2.99","5.99"], "button"=>"", "id"=>"2"}

如何正确设置表单,订单总是完整无缺?

2 个答案:

答案 0 :(得分:0)

好的,首先我相信你的模型类中仍然需要serialize :rate。 但是为了使该速率与您在开始时显示的格式相匹配,您需要执行rate = rate.map {|rt| rt.to_f}(是的,我知道必须有一种简化方法)。

答案 1 :(得分:0)

看起来它正在序列化。你在使用Rails 4吗?如果是这样,请检查控制器中的permit方法。对于PG数组,它应该如下所示:

params.permit({rate: []})

另外,我建议将列名更改为费率。 :)