Rails 3:为集合的每个元素创建输入字段(MongoID)

时间:2012-09-30 18:45:13

标签: ruby-on-rails ruby-on-rails-3

我有两个模型,项目和出价

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

在views / prices / index中,我想列出表格中的所有项目,并为每个项目添加一个字段,人们可以在其中输入数字。表单底部应该是所有记录的提交按钮。

如何最好地实现这一目标?

有很多代码可以解释如何在一项调查中添加几个问题(http://railscasts.com/episodes/196-nested-model-form-part-1)但是我找不到一个示例,说明如何为集合的每个现有元素添加一条新记录。

1 个答案:

答案 0 :(得分: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