0

Item と Bid の 2 つのモデルがあります。

class Item
  include Mongoid::Document
  field :name, type: String
  has_many :bids 
end

class Bid
  include Mongoid::Document
  include Mongoid::Timestamps::Created
  field :bid, type: Float
  field :bidder, type: String
  belongs_to :item  
end

ビュー/価格/インデックスでは、テーブル内のすべてのアイテムをリストし、各アイテムの隣に数字を入力できるフィールドを配置したいと思います。フォームの下部には、すべてのレコードの送信ボタンが必要です。

これはどのように達成するのが最善ですか?

たとえば、1 つの調査に複数の質問を追加する方法を説明するコードはたくさんあります (http://railscasts.com/episodes/196-nested-model-form-part-1) が、例が見つかりませんでした。これは、コレクションの既存の要素ごとに 1 つの新しいレコードを追加する方法を示しています。

4

1 に答える 1

0

最初からすべての項目を使用することがわかっている場合は、項目ごとにフォームを動的に追加する必要はないと思います。

クイック&ダーティ:

form_for(@items) do |f|
  @items.each do |item|
    f.label item.name
    f.text_field item.name.to_sym, :value => "1"
  end
  f.submit "Submit"
end

私はこれを試しておらず、そのコードはテストされていませんが、コントローラーでいくつかの作業を行って各入札を作成すれば、問題ないと思います。また、入札クラスの変数名としては、Bid.bid を使用するよりも amount の方が適しています。

これを行う適切な方法 (更新も可能) は、ネストされたフォームを作成し、fields_forメソッドを使用してライブの入札オブジェクトを実際に確認することです: http://archives.ryandaigle.com/articles/2009/2/1 /what-s-new-in-edge-rails-nested-attributes

于 2012-09-30T19:06:46.973 に答える