如何在Ruby on Rails的Slim模板中条件添加div包裹前两个加载结果
解决方案
问题原因
原有代码仅给索引为0的第一个渲染结果套了loading-top-two容器,第二个结果(索引为1)直接暴露在容器外,不符合需求。同时在Slim循环内动态开启、关闭容器容易出现标签闭合异常,更推荐直接拆分渲染逻辑的实现方式。
固定3个加载项的实现方案
对应你当前写死0~2索引的场景,直接拆分前两个和第三个分开渲染即可:
.loader-results .loading-top-two - (0..1).each do |i| = render "lawyers/search/loading_result", idx: i = render "lawyers/search/loading_result", idx: 2
动态数量加载项的RoR便捷实现
如果加载项数量不固定,可以用Ruby内置的each_slice方法或者RoR Active Support提供的分组工具拆分集合,不需要手动维护索引,兼容性和可读性更高:
.loader-results / 拆分集合为前2项和剩余项 - top_two, *rest = @loading_items.each_slice(2).to_a .loading-top-two - top_two.each do |item| = render "lawyers/search/loading_result", item: item - rest.flatten.each do |item| = render "lawyers/search/loading_result", item: item
内容的提问来源于stack exchange,提问作者ibpix
相关产品推荐
相关产品推荐

