事情是:我正在做一个基本的饮食计划,它有膳食,成分和数量。 当用户做饭时,他选择成分并设定其数量。 我想要的只是在膳食索引页面中显示成分及其数量。
<% meal.ingredients.each do |ingredient| %>
<tr>
<td><%= ingredient.name %></td>
<% ingredient.quantities.each do |q| %>
<td><%= q.quant %></td>
<% end %>
<td><%= ingredient.unit %></td>
<td><%= ingredient.carb %></td>
<td><%= ingredient.prot %></td>
<td><%= ingredient.fat %></td>
</tr>
<% end %>
显示与所选成分相关的所有数量。我没有张贴模特,因为我觉得它太明显了。 感谢
修改
分贝/ schema.rb
create_table "ingredients", force: :cascade do |t|
t.string "name"
t.string "unit"
t.float "carb"
t.float "prot"
t.float "fat"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "meals", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "quantities", force: :cascade do |t|
t.float "quant"
t.integer "ingredient_id"
t.integer "meal_id"
end
视图/餐/ index.html.erb
<% @meals.each do |meal| %>
<div class="x_panel">
<div class="x_title">
<h2><%= meal.name %></h2>
<ul class="nav navbar-right panel_toolbox">
<li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-wrench"></i></a>
<ul class="dropdown-menu" role="menu">
<li><%= link_to 'Show', meal %>
</li>
<li><%= link_to 'Edit', edit_meal_path(meal) %>
</li>
</ul>
</li>
<li><%= link_to '', meal, method: :delete, data: { confirm: 'Are you sure?' }, class: "fa fa-close" %>
</li>
</ul>
<div class="clearfix"></div>
</div>
<div class="x_content">
<table class="table table-striped">
<tbody>
<% meal.ingredients.each do |ingredient| %>
<tr>
<td><%= ingredient.name %></td>
<% ingredient.quantities.each do |q| %>
<td><%= q.quant %></td>
<% end %>
<td><%= ingredient.unit %></td>
<td><%= ingredient.carb %></td>
<td><%= ingredient.prot %></td>
<td><%= ingredient.fat %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<% end %>
<%= link_to 'New Meal', new_meal_path %>
突出显示的数字是香蕉成分的数量。
然而,对于与之相关的膳食,我只想要&#34; 123&#34;。
我想这是一个查询问题,我不知道如何修复它。
答案 0 :(得分:0)
这可能是您正在寻找的:
<% meal.ingredients.each do |ingredient| %>
<tr>
<td><%= ingredient.name %></td>
<td><%= ingredient.quantities.first.quant %></td>
</tr>
<% end %>
这将显示成分名称和成分的第一个数量。它不会显示任何额外的成分,而不是碳水化合物,蛋白质或脂肪量。
答案 1 :(得分:0)
GOT IT!
<p id="notice"><%= notice %></p>
<h1>Listing Meals</h1>
<% @meals.each do |meal| %>
<div class="x_panel">
<div class="x_title">
<h2><%= meal.name %></h2>
<ul class="nav navbar-right panel_toolbox">
<li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-wrench"></i></a>
<ul class="dropdown-menu" role="menu">
<li><%= link_to 'Show', meal %>
</li>
<li><%= link_to 'Edit', edit_meal_path(meal) %>
</li>
</ul>
</li>
<li><%= link_to '', meal, method: :delete, data: { confirm: 'Are you sure?' }, class: "fa fa-close" %>
</li>
</ul>
<div class="clearfix"></div>
</div>
<div class="x_content">
<table class="table table-striped">
<tbody>
<% meal.ingredients.each do |ingredient| %>
<tr>
<td><%= ingredient.name %></td>
<!-- FILTERED INGREDIENT QUANTITY ACCORDING TO MEAL ID -->
<td><%= ingredient.quantities.find_by(meal_id: meal.id).quant %></td>
<td><%= ingredient.unit %></td>
<td><%= ingredient.carb %></td>
<td><%= ingredient.prot %></td>
<td><%= ingredient.fat %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<% end %>
<%= link_to 'New Meal', new_meal_path %>
我只是不知道这是否是最好的解决方案,但对我有用!