1

我有一个邮资表,其中包含一个使用 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"}

如何正确设置表格,订单是否始终完好无损?

4

2 回答 2

0

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

于 2013-09-04T16:18:33.277 回答
0

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

params.permit({rate: []})

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

于 2013-09-04T18:34:21.823 回答