我有一个产品页面,上面有4个不同的类别标签。创建的产品只能属于页面上4个类别/选项卡中的一个。这些类别都通过图像并排显示在选项卡窗格的顶部。需要添加到<% @packs.each do |pack| %>
部分才能加载产品&#34;如果&#34;他们属于那个类别,谢谢!
这是选项卡类别选择链接之一的示例...
<a href="#samplePacks" aria-controls="samplePacks" data-toggle="tab">
<h2 class="base-text">Samples</h2>
<%= image_tag("btn_Category_1.png", :alt => "Category one", class: "image-pad center") %>
</a>
后面是相应的标签,链接到上面的选择器......
<div role="tabpanel" class="tab-pane fade in active" id="samplePacks">
<div class="wellone pack-well">
<div class="row" id="samplePillars">
<% @packs.each do |pack| %>
<div class="col-md-4 pack-pad">
<%= link_to pack_path(pack) do %>
<%= image_tag("#{pack.art_link}", :alt => "Product Image", :width => 333, :height => 333, class: "feat-img") %>
<% end %>
</div>
<% end %>
</div>
</div>
</div>
答案 0 :(得分:0)
你可以通过几种不同的方式做到这一点。这是两个:
在你的控制器中,
@packs = @packs.group_by { |pack| pack.category.name }
应该产生类似{'samplePillars' => [Pack, Pack]}
在你看来
@packs.select { |pack| pack.category.name == 'samplePillars' }.each do ... end
会返回@packs
数组category.name
samplePillars
有更多惯用的方法可以做到这一点,但为了开始,这两个很好。
答案 1 :(得分:0)
所以我最终找到了解决该问题的另一种方法。
在我的 packs.view 中(&
允许代码运行,即使数据库中没有该类别的代码也是如此)
<% @packs['sample-pack']&.each do |pack| %>
<div class="col-md-4 pack-pad img-cont">
<%= link_to pack_path(pack) do %>
<%= image_tag("#{pack.art_link}", :alt => "", class: "img-responsive shade packit") %>
</div>
<% end %>
</div>
<% end %>
在我的包装控制器中:@packs = Pack.friendly.all.group_by(&:category_id)
我正在使用一个名为friendly_id的宝石,这就是.friendly
在那里的唯一原因。