显示产品(如果属于类别)

时间:2018-01-12 19:26:11

标签: ruby-on-rails ruby

我有一个产品页面,上面有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>

2 个答案:

答案 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在那里的唯一原因。