2016-04-21 12 views
0

私は3つのテキスト入力フィールドを持っており、それぞれが座標を表し、それらは配列モデル[x, y, z]のモデルに格納されています。単純なフォームのテキスト入力フィールドを配列の一部として

入力フィールドを使用してフォームと一緒に送信された配列を生成しようとしています。現在、私のコード:

=f.input_field :coordinates[0], value: "1" 
=f.input_field :coordinates[1], value: "2" 
=f.input_field :coordinates[2], value: "3" 

だから、私は期待しては、私はデータベースに保存し、コントローラにcoordinatesのparamを使用することができるということです。 このセットアップでは、生成されたhtmlは、<input value="1" name="shape[coordinates][]" id="shape_coordinates_0">

N.Bである必要がある場合、<input value="1" name="shape[o]" id="shape_o">になります。

= f.input_field :coordinates, input_html: { value: 1, 
              id: "shape_coordinates_0", 
              name: "shape[coordinates][]" } 

しかし、私がコーディネートして、配列にそれを団結各モデルにattr_readersを作成することをお勧め:私はすでにモデルでserialize :coordinates

答えて

1

は、カスタムは、このように直接属性を設定してみている

# model: 
class Shape < ActiveRecord::Base 
    attr_reader :x, :y, :z #since you want to serialize it 

    before_create :build_coordinates 

    private 

    def build_coordinates 
    self.coordinates = [x, y, z] 
    end 
end 
は、この場合、あなたのビューは、非常に簡単に次のようになります。

=f.input_field :x, value: "1" 
=f.input_field :y, value: "2" 
=f.input_field :z, value: "3" 
関連する問題