製品の選択に入力するカテゴリの選択があります。
<%= f.collection_select(:category_id, Category.active.sorted, :id, :name, :include_blank => true ) %>
選択したカテゴリに基づいて、その category_id を持つ製品が次の選択に読み込まれます。
<%= f.grouped_collection_select :product_id, Category.active.sorted, :products, :name, :id, :name, include_blank: true %>
2 つの質問:
アクティブなスコープを持つ製品のみを表示するにはどうすればよいですか? すなわち:
Product.active
同様に、カテゴリ選択リストで、アクティブな製品が関連付けられているカテゴリのみを表示するにはどうすればよいですか? つまり、選択したカテゴリに製品またはアクティブでない製品がない場合、そのカテゴリは最初のドロップダウンに表示されません。
JS コード:
$('#request_product_id').parent().hide()
products = $('#request_product_id').html()
emptyOption = $('<option />').attr('value', '');
$('#request_category_id').change ->
category = $('#request_category_id :selected').text()
options = $(products).filter("optgroup[label='#{category}']").prepend(emptyOption).html()
if options
$('#request_product_id').html(options)
$('#request_product_id').parent().show()
else
$('#request_product_id').empty()
$('#request_product_id').parent().hide()