1

postgresql を使用した配列型である rate 列を持つ郵便料金テーブルがあります。配列には、[1.99、2.99、5.99] などの 3 つの値が含まれます。フォームを正しく送信する方法がわかりません。配列の各要素のフィールドを表示したいのです。

私の現在の非動作コードは;

    = 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

きちんとシリアライズされているようです。Rails 4 を使用していますか? その場合は、コントローラーの permit メソッドを確認してください。PG 配列の場合、次のようになります。

params.permit({rate: []})

また、列名を rate に変更することをお勧めします。:)

于 2013-09-04T18:34:21.823 に答える
0

わかりました、まず第一にserialize :rate、モデルクラスにはまだ必要があると思います。しかし、そのレートを最初に示した形式に一致させるには、やらrate = rate.map {|rt| rt.to_f}なければならないことがあります (これを単純化する方法が必要であることはわかっています)。

于 2013-09-04T16:18:33.277 に答える