将单个3级深度下拉菜单更改为3个saperated下拉菜单(Rails / ancestry / simple_form)

时间:2018-12-28 22:19:42

标签: javascript ruby-on-rails ajax drop-down-menu ruby-on-rails-5

尝试使用上一个有关该问题的问题的解决方案失败。因此,我将尽我所能使其更加清晰,如果您需要我可以提供的更多信息,以便您可以帮助我,请告诉我。我在这里找到了这个解决方案,它非常适合单个下拉菜单,但是我不希望这样。所以:

我有Rails 5.2,并且已经实现了祖先宝石。

我有一个零件模型(汽车零件)和类别模型。

#category.rb
class Category < ApplicationRecord
  has_ancestry
  has_many :parts
end

-

#part.rb
class Part < ApplicationRecord
  belongs_to :category
end

我在控制台中创建了带有子类别的示例类别,只是为了使其工作,但我将为Bikes等添加许多类别和子类别:

car = Category.create!(name: "Car")
brakes = Category.create!(name: "Brakes", parent: car)
brake_pads = Category.create!(name: "Brake Pads", parent: brakes)

在helpers / application_helper.rb中:

#helpers/application_helper.rb:
module ApplicationHelper
  def nested_dropdown(items)
    result = []
    items.map do |item, sub_items|
      result << [('- ' * item.depth) + item.name, item.id]
      result += nested_dropdown(sub_items) unless sub_items.blank?
    end
    result
  end
end

在我的views / parts / new.html.haml中:

#views/parts/new.html.haml
.container
  %h2.center Create offer
  = simple_form_for(@part, html: {class: "form-group" }) do |f|
    .form-group.col-md-8.col-md-offset-2.well
      = f.input :title
      = f.input :make_name, label: "Make"
      = f.input :code, label: 'Part number'
      = f.association :condition, label_method: :name, prompt: "-"
      = f.select(:category_id,nested_dropdown(Category.all.arrange), 
        selected: @category, include_blank: true )
      = f.input :description
      .form-actions
        = f.button :submit, class: "btn btn-primary btn-dark-blue"

An IMAGE of the result of my new form in browser is this (请打开照片,看看我想要什么)

因此,用户将填写必填字段,然后他应该选择刹车片,然后创建报价。

问题

我该如何使用3个单独的下拉菜单?假设在此示例中,用户可以选择“汽车”类别,然后在第二个下拉列表中选择“汽车”类别子类别,并在最后一个下拉列表中选择“制动”子类别。例如

汽车->刹车->刹车片

因此,在选择“刹车片”后,他可以创建报价。

0 个答案:

没有答案