選択された祖先の宝石を使用して動的選択を探しています。誰かが以前にこれを行ったことを願っています。
約 2000 (カテゴリ、サブカテゴリ、およびキーワード) があり、すべて STI にあり、ツリー構造になっています。私のフォームでは、カテゴリに 3 つの選択入力を使用しています | サブカテゴリ | キーワードですが、サブカテゴリの膨大なリストとさらに大きなキーワードのリストを取得します。事前に選択されたカテゴリの子ではないすべてのサブカテゴリを非表示にしたい。キーワードと同じ。
うまくいけば、これは意味があり、私がやろうとしていることです. どんなアイデアでも大歓迎です。
これまでのところ、このコードはすべてうまく機能しています。
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