【发布时间】:2016-09-14 14:47:41
【问题描述】:
我正在与 Elixir 和 Phoenix 合作开展一个项目,比如 POS 系统。 我的数据库中有几种食物
schema "foods" do
field :name, :string
field :price, :integer
belongs_to :category, Pos1.Category
has_many :order_items, Pos1.OrderItem
以及订单(用于保持订单)
schema "orders" do
field :number_of_customers, :integer
belongs_to :table, Pos1.Table
has_many :order_items, Pos1.OrderItem
和订单项目(用于保持订单项目链接到特定的 order_id)
schema "order_items" do
field :quantity, :integer
belongs_to :order, Pos1.Order
belongs_to :food, Pos1.Food
我想创建一个页面,列出数据库中的所有食物。这些食物中的每一种都应该有一个按钮,单击该按钮会将食物添加到 order_item 表中。
这是我到目前为止想出的(show.html):
<%= for food <- @foods do %>
<%= food.name %>
<%= render Pos1.OrderItemView, "form.html", changeset: @order_item_changeset, foods: @foods, action: order_order_item_path(@conn, :create, @order) %>
<% end %>
和表单(form.html)
<%= form_for @changeset, @action, fn f -> %>
<div class="form-group">
<%= label f, :food_id, class: "control-label" %>
<%= select f, :food_id, foods_to_select(@foods), class: "form-control" %>
<%= error_tag f, :food_id %>
</div>
<div class="form-group">
<%= label f, :quantity, class: "control-label" %>
<%= number_input f, :quantity, class: "form-control" %>
<%= error_tag f, :quantity %>
</div>
<div class="form-group">
<%= submit "Addfood", class: "btn btn-primary" %>
</div>
<% end %>
但是,我正在为 food_id 苦苦挣扎。在上面的代码中,我仍然需要在变更集表单中选择食物和数量 like here ,但是是否可以根据我在 show.html 页面上的特定食物自动分配 food_id(插入到 db 中)?所以,所有的食物都会有数量选择。
例如,如果我有两种食物:可乐和百事可乐。在 show.html 上,我有两个盒子:一个是可乐的,一个是百事可乐的。每个盒子都会有数量输入,和“提交按钮”。因此,如果我在可乐框中输入 1 并单击,它将被插入到 order_items 表中。对于百事可乐或任何其他食物,反之亦然。
提前致谢!
【问题讨论】: