Ruby on Rails:产品分类&显示

时间:2018-01-11 13:48:01

标签: ruby-on-rails ruby

我有一个产品页面和4个不同的类别标签。创建的产品只能属于页面上4个类别/选项卡中的一个。我如何通过表格和选项选择产品所属的类别?如何加载属于每个类别的产品?

我目前在网页上加载已创建产品的设置就是这样。

这是仅一个选项卡类别选择链接的示例...

<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>

当您单击4个选项卡中的任何一个时,您将获得其唯一的项目类别。没有&#34;显示所有项目,无论类别&#34;每个项目都不能从其类别中移动。

我需要添加到<% @packs.each do |pack| %>以加载特定类别的代码是什么?

提前非常感谢你。

2 个答案:

答案 0 :(得分:1)

对于您要找的内容,您可以使用collection_select

collection_select(:product, :category_id, Category.all, :id, :category_name, prompt: true)

这是一种很好的方法,因为它会从您的数据库动态加载所有下拉选项。

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

答案 1 :(得分:1)


首先,您应该在category_id表格中设置products,然后您需要在ProductCategory模型中设置关联

class Product < ApplicationRecord
  belongs_to :category
end


并在Category模型中

class Category < ApplicationRecord
  has_many :products
end

现在,在products/new.html.erb

<%= form_for @product do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.label :category_id %><br>
  <%= f.collection_select :category_id, Category.all, :id, :name,prompt: "Select Category" %>
 <%= f.submit %>
<% end %>


然后,您可以使用关联来显示每个类别的产品@category.products。希望这会有所帮助