以多对多关系创建/编辑中间模型类

时间:2013-06-26 10:44:48

标签: ruby-on-rails

目前,我的应用有3个型号,
我想通过指定所需的食物数量来添加新的收据。

class Receipt < ActiveRecord::Base
  # columns: id, place
  has_many :receipt_foods
  has_many :foods, through: :receipt_food
end

class ReceiptFood < ActiveRecord::Base
  # columns: id, quantity, receipt_id, food_id
  belongs_to :receipt
  belongs_to :food
end

class Food < ActiveRecord::Base
  # columns: id, name
  has_many :receipt_foods
  has_many :receipts, through: :receipt_food
end

我的问题是如何以我的形式创造食物数量,
例如:创造3种不同的食物,每种食物3种数量

我知道如何仅在rails console中创建此内容,不知道如何在网络中使用form_for
我试过fields_for,但大多数例子只解释了创建和编辑2个模型的属性 任何人都可以建议方式或任何材料/文章谈论这个吗? 感谢

1 个答案:

答案 0 :(得分:0)

我不确定,但我愿意:

= form_for :receipt_food do |f|
  = f.number_field :quantity, min: 0
  = f.select :food_id, Food.all.map{ |food| [food.name, food.id] }
  = f.select :receipt_id, Receipt.all.map{ |receipt| [receipt.place, receipt.id] }

我会在这些字段中添加标签。

此外,我认为惯例是将其命名为:FoodReceipt,它是按字母顺序排列的。