2012-09-30 23 views
0

我有兩個型號,編號和投標的Rails 3:創建輸入字段集合中的每個元素(MongoID)

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 

在視圖/價格/指數我想列出表中的所有項目,對於每個項目,都會在下一個字段中輸入一個數字。表單底部應該是所有記錄的提交按鈕。

這最好的實現方式是什麼?

有很多代碼可以解釋如何將一些問題添加到一項調查中(但是我不能這麼做) t找到一個示例,顯示如何爲集合中的每個現有元素添加一條新記錄。

回答

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更好的變量名稱。

正確的方式做到這一點(這也將允許更新)將是使一個嵌套表格,然後用fields_for方法來實際看看現場競價對象:http://archives.ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

+0

工作非常出色,我改變後的第一個行到'form_for:items do | f |'。不知道爲什麼這是必要的,但... – migu

+0

他們只是指向不同的路線路徑。它很可能試圖指向更新@items。 http://stackoverflow.com/questions/957204/instance-variable-vs-symbol-in-ruby-on-rails-form-for – cbron

相關問題