用祖先宝石和选择的动态选择



我正在寻找通过选择和祖先宝石的动态选择,我希望有人以前这样做。

我有2000年左右(类别,子类别和关键字)都处于STI中,并且具有树结构。以我的形式,我正在使用三个选择输入|子类别|关键字,但是我得到了子类别的大量列表,甚至更大的关键字列表。我想隐藏所有不是预选类别的子类别的子类别;与关键字相同。

希望这是一种感觉,我要做的事情。我非常感谢任何想法。

到目前为止我拥有的一切,所有这些代码都很好。

class Company < ActiveRecord::Base
has_and_belongs_to_many :categories, :join_table => "companies_categories"
has_and_belongs_to_many :subcategories, :join_table => "companies_subcategories"
has_and_belongs_to_many :keywords, :join_table => "companies_keywords"
end
class Category < ActiveRecord::Base
has_ancestry  :cache_depth => true, :depth_cache_column => :ancestry_depth
has_many :subcategories, :class_name => "Category", :foreign_key => :subcategory_id
has_many :keywords, :class_name => "Category", :foreign_key => :keyword_id
belongs_to :category
has_and_belongs_to_many :companies, :join_table => "companies_categories"
has_and_belongs_to_many :companies, :join_table => "companies_subcategories", :association_foreign_key => "subcategory_id"
has_and_belongs_to_many :companies, :join_table => "companies_keywords", :association_foreign_key => "keyword_id"
end  

这是JavaScript

jQuery(function($){
$(".chosen-input").chosen();
$(".schosen-input").chosen();
$(".kchosen-input").chosen();
});    

这是我的表格

form :html => { :enctype => "multipart/form-data" }  do |f|
f.inputs "New Company" do
  f.input :name,  :required => true
end
f.inputs "Categories" do
  f.input :categories,
          :input_html => { :class => "chosen-input", :multiple => true, :style => "width: 700px;"},
          :collection => Category.where(:ancestry_depth => '2')

  f.input :subcategories,
          :input_html => { :class => "schosen-input", :multiple => true, :style => "width: 700px;"},
          :collection => Category.where(:ancestry_depth => '3')

  f.input :keywords,
          :input_html => { :class => "schosen-input", :multiple => true, :style => "width: 700px;"},
          :collection => Category.where(:ancestry_depth => [4, 5, 6])
end

我使用select2,但我认为选择也可以。因此,您必须使用AJAX请求。在服务器端定义一个获取类别ID的操作(所选类别的ID),并返回所选类别ID的孩子的类别(以JSON格式)的集合(以JSON格式)。然后在客户端(使用jQuery或Javasciprt),您必须使用JSON对象填充选择输入。

jQuery活动您可以使用:http://api.jquery.com/change/

填充选择输入:jQuery-填充json

中的选择

,在ActiveAdmin中,您必须根据DOM确定选择输入。

相关内容

  • 没有找到相关文章

最新更新