Было бы полезно, если бы вы дали нам больше информации о ваших моделях данных. Я обрисую то, что вы думаете, основываясь на вашем вопросе.
class Product < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :products
end
и при условии, что у вас настроены маршруты:
resources :categories do
resources :products
end
вам нужно подключить событие change
к select_tag
, чтобы запросить список продуктов на основе выбранного идентификатора категории.
$('select#categories').change(function(){
var category_id = $(this).find('option:selected').val();
$.getJSON(
'/categories/' + category_id + '/products',
function(response) {
// render your template on the page here
}
);
});
Я написал плагин jQuery для упрощения базовых взаимодействий RESTful с контроллером Rails, поэтому его можно записать так:
$('select#categories').change(function(){
var category_id = $(this).find('option:selected').val();
$.read(
'/categories/{category_id}/products',
{ category_id: category_id },
function (response) {
// render your template
}
);
});
Хотя $.read
не намного проще, чем $.getJSON
, другие операции сэкономят вам много времени на печатание.
Остальная часть реализации находится в контроллере, но у вас есть гораздо больше возможностей для реализации этого, поэтому я не могу догадаться, что будет полезно для вас без дополнительной информации.