2016-05-18 6 views
1

私は、POSシステムのようなエリクシールとフェニックスのプロジェクトに取り組んでいます。 私は(注文を保つために)私のデシベルにエリクサー/フェニックスは1つのフィールドの自動割り当てを変更します

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 

私は、データベースからすべての食品を一覧表示するページを作りたいと思います。これらの各食品にはボタンがあり、onclickはその食品をorder_itemテーブルに追加します。

これは私がこれまでに(show.html)思い付いたものです。しかし、私はfood_idに苦しんでいます

<%= 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 %> 

。上記のコードでは、チェンジセット形式のフードと数量を選択する必要があります。 like here ですが、show.htmlにある特定のフードに基づいて、自動的にfood_idを割り当てることができますページ?だから、すべての食品だけで数量の選択があります。

たとえば、私に2つの食品、コークスとペプシがあるとします。 show.htmlにはコークス用とペプシ用の2つのボックスがあります。各ボックスには数量入力と「送信ボタン」があります。したがって、コークスボックスとonclickに1を入力すると、order_itemsテーブルに挿入されます。ペプシやその他の食品の場合は逆も同様です。

ありがとうございます!

答えて

3

フォームにfood_idを渡してから、form.html.eexに隠し入力タグに@food_idを入力します。また@foodsform.html.eexに渡す必要はありません。

show.html.eex:

<%= for food <- @foods do %> 
    <%= food.name %> 
    <%= render Pos1.OrderItemView, "form.html", changeset: @order_item_changeset, action: order_order_item_path(@conn, :create, @order), food_id: food.id %> 
<% end %> 

form.html.eex:

<%= form_for @changeset, @action, fn f -> %> 
    <%= hidden_input f, :food_id, value: @food_id %> 

    <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 "Add food", class: "btn btn-primary" %> 
    </div> 
<% end %> 
+0

だけしようと、それが動作します。 hidden_​​inputそれは私が探していたものです。どうもありがとう! – Ilya

関連する問題