我有两个模型,项目和出价
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)但是我找不到一个示例,说明如何为集合的每个现有元素添加一条新记录。
答案 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