将现有对象添加到另一个对象(Ruby on Rails)

时间:2011-01-11 23:17:54

标签: ruby-on-rails forms

我有一个Item模型和一个Cycle模型。项目模型属于周期,周期有很多项目。项目模型具有条形码值和cycle_id值。

我希望有一个显示周期模板,其中有10个空白字段用于输入条形码值。假设数据库中已存在100个项目(条形码值但没有cycle_id)。当在字段中输入条形码值时,应用程序应拉出每个输入的条形码值,并使用当前所选循环的cycle_id更新相关项目。

这可能是一个太宽泛的问题,但我已经圈了几个小时,我甚至不知道从哪里开始。任何帮助是极大的赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

在你的周期新/编辑表单中,我会在表单的某处添加十个空输入框。不是标记的最好例子,但是像这样:

<% 10.times do %>
  <input name="barcodes[]" />
<% end %>

然后在你的循环控制器中,我会找到循环,然后添加他们输入的所有条形码。如果它们不存在,我假设你不想让它们创建新的条形码。 (这是Rails 3语法)

def update
  @cycle = Cycle.find(params[:id])

  barcodes = Item.where(:barcode => params[:barcodes])
  @cycle.barcodes = barcodes

  @cycle.save
end

答案 1 :(得分:0)

假设您要将条形码ID为1,2,3,4的项目添加到ID为1的Cycle中。您可以这样做

cycle = Cycle.find(1)
[1, 2, 3, 4].each do |barcode|
   item = Items.where(:barcode => barcode)
   cycle.items << item
end
cycle.save

或做

cycle = Cycle.find(1)
[1, 2, 3, 4].each do |barcode|
   item = Items.where(:barcode => barcode)
   item.cycle = cycle
   item.save
end