html - 如何根据 Ruby on Rails 中的记录类别有条件地显示表的内容?
问题描述
我在 RoR 中迈出了第一步,尝试显示“附带”表的内容,并根据附带类别对它们进行排序。因此,例如,我想在我的视图中以可折叠的方式显示属于“沐浴”类别的所有杂物(肥皂、毛巾、洗发水等),然后显示属于“电子”类别的所有杂物(A/C、电视机,遥控器等),在另一个可折叠的。
到目前为止,我已经设法用这段代码做到了这一点,我觉得这非常肮脏和低效:
<ul class="collapsible">
<li>
<div class="collapsible-header"><i class="material-icons">filter_drama</i>Baño y Aseo</div>
<div class="collapsible-body">
<table class="striped centered">
<thead>
</thead>
<tbody>
**<% Incidental.all.each do |incidental| %>
<% case incidental.category %>
<% when "bath" %>
<tr>
<td><%= incidental.item %></td>
<td><a href="#" class="btn btn-submit">Pedir</a></td>
</tr>
<% end %>
<% end %>**
</tbody>
</table>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons">place</i>Electrodomésticos</div>
<div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span>
<<table class="striped centered">
<thead>
</thead>
<tbody>
<% Incidental.all.each do |incidental| %>
<% case incidental.category %>
<% when "electro" %>
<tr>
<td><%= incidental.item %></td>
<td><a href="#" class="btn btn-submit">Pedir</a></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons">whatshot</i>Third</div>
<div class="collapsible-body"><span>Lorem ipsum dolor sit amet.</span></div>
</li>
</ul>
这行得通,但为了实现这一点,我必须运行多个<% Incidental.all.each 做 |incidental| %>循环并遍历整个表,同时仅显示带有案例块的相关记录。对我来说,这看起来是一种非常低效且“非 RoR-ish”的方法。
我想做的是只浏览一次“附带清单”,并在适当的可折叠物品上显示每个项目。我应该如何实现这一目标?先感谢您!
解决方案
你的模型上有示波器设置吗?我会尝试类似的东西:
## app/models/incidental.rb
class Incidental < ApplicationRecord
scope :electro -> { where category: 'electro' }
...
...
end
这将使您可以:
<% Incidental.electro.each do |incidental| %>
<tr>
<td><%= incidental.item %></td>
<td><a href="#" class="btn btn-submit">Pedir</a></td>
</tr>
<% end %>
哪个应该给你想要的结果
推荐阅读
- python-3.x - Python GTK3 - 搜索后以编程方式在TreeView中选择节点?
- reactjs - JSX 道具不应该使用函数 react/jsx-no-bind
- r - 如何使用 distill 更改 R 博客的预览图像布局
- android - 如何解决flutter config --android studio期间出现的问题?
- flask - 如何使用 WTForms 单独渲染单选按钮?
- javascript - 如何在嵌套数组中使用嵌套循环
- laravel - Laravel docker API 路由不工作,但网络路由工作
- python-3.x - 如何将单元格样式从多个输入 xlsx 文件复制到具有多个工作表的多个输出 xlsx 文件
- c# - 我可以使用多线程和并行编程进行网络抓取吗?
- python - Pandas 和 numpy 之间的语法逻辑