0

目前,我的应用程序有 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 个模型属性。
任何人都可以建议方法或任何材料/文章谈论这个吗?
谢谢

4

1 回答 1

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,它是按字母顺序排列的。

于 2013-06-26T13:12:24.713 回答