【问题标题】:nested drop down box and multi-select box based on each drop down in rails?基于rails中的每个下拉菜单的嵌套下拉框和多选框?
【发布时间】:2013-06-20 13:35:44
【问题描述】:

我有一个要求,开始时有点困难,我寻求一些帮助。我有三个表,即服装、类别和材料。考虑服装表包含

--男装

-----童装

我有一个页面来添加服装,在添加服装时,我需要一个下拉列表,其中应该列出类别。在选择类别时,属于所选类别的材料应该出现在多选框中,我们可以从中选择需要保存在表格中的多个材料。

选择类别的下拉菜单应该是嵌套的,因为我们还可以选择多个类别,每次添加一个类别时,与该类别相关的多选下拉菜单应该显示在类别下拉菜单之后。

请考虑以下清楚解释的图片

如何创建一个表格来保存我从这些表格中选择的值?

更新:

class Apparel < ActiveRecord::Base
    has_and_belongs_to_many :categories
end

class Category < ActiveRecord::Base
    has_and_belongs_to_many :apparels
    has_and_belongs_to_many :materials
end

class Material < ActiveRecord::Base
    has_and_belongs_to_many :categories
end

以上是模型和它们之间的关联。我想显示一个下拉菜单,并且应该包含类别,并且在选择的选择时,应在每个下拉时显示多个选择框,以便从中显示它们以选择材料或告诉我我是否可以保持多个-选择而不是下拉,并且在每次选择时,另一个多选框应填充与其相关的值。下图会解释清楚

【问题讨论】:

  • 我不知道你问的是1:选择类别/添加服装时更新下拉菜单,还是2:如何将这些数据存储在数据库中?如果是 2,那么请添加一些代码来解释模型之间的关系。
  • 嗨 jokklan。我正在寻找两者。但在此之前,我将再解释一次。当我创建新服装时,我还需要选择裤子、衬衫、裤子等类别。这更像是一个嵌套下拉列表,可以通过单击添加按钮并在选择类别时选择与所选材料相关的材料类别应显示在多选框中,我们可以在其中选择多个项目。因此,这将帮助您更好地理解第一个。我还没有开始,但我会尽快更新代码,这样我就不会错过一个好的帮助。感谢您再次光临。

标签: ruby-on-rails ruby-on-rails-3 drop-down-menu nested-attributes


【解决方案1】:

我需要更多信息,尤其是一些代码示例来真正帮助您。但是,这里有一些资源可以帮助您入门。当你写了一些东西后,请回来,我/其他人可以进一步帮助你:)

更新:如何动态填充下拉/选择菜单

好的,您想要的是有一个服装选择菜单(也称为下拉菜单),每次您选择一个类别时都会更新(在多选菜单中)。对此你可以使用Railscasts #88 - Dynamic select menus (revised)中显示的方法吗,但我在这里解释一下:

首先我们要创建视图:

<%= form_for @object do |f| %> # don't know what your form is for, but you can just change it accordantly 
  <%= f.collection_select(:category_ids, Category.all, :id, :name, {}, {:multiple => true, :id => 'category_select'})
  <%= f.grouped_collection_select :apparel_id, Category.all, :apparels, :name, :id, :name, {}, {:id => 'appare} %>
<% end %>

然后我们在 assets 目录中添加一些 javascript:

jQuery ->
  $('#apparel_select').hide() # hide the select menu
  apparels = $('#apparel_select').html() # get all the apparels in groups (the option and optgroup tags)

  $('#category_select').change -> # when selecting/deselecting a category, should we update the apparels select menu
    categories = $('#sel9UX :selected').map -> # find the selected categories
      $(this).text() 

    options = {} 
    $.each categories, (index, value) -> # find all the optgroups that should be shown
      options[value] = $(apparels).filter("optgroup[label='#{value}']")

    $('#apparel_select').html("") # empty the select menu
    $.each options, (key, value) -> # add each category group we have selected
      $('#apparel_select').append(value)

    $('#apparel_select').show() # show the select menu again

这是用 jQuery 用 CoffeeScript 编写的。如果你不使用 CoffeeScript,那么写一个评论,我会尝试用普通的 javascript 语法来写。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
相关资源
最近更新 更多