Вы в основном вызове метода для экземпляра каждого родительского объекта в сгруппированных выберите. Поэтому, если у вас есть метод экземпляра для родительского объекта (категории), который соответствует требуемым продуктам, вы можете вызвать его в помощнике. Что-то вроде этого:
Class Category
has_and_belongs_to_many :products
def target_products
#return a collection here that corresponds to what you're looking for based on
#your criteria in the associated product(s) object. For example:
self.products.active #where active is a named scope in Product for what you're looking for.
#You could also add an AR macro method with a condition etc. Basically any thing that
#will respond to category.target_products in the end.
end
end
Затем используйте этот метод в groupand_collection_select.
<%= c.grouped_collection_select :product_id, @categories, :target_products, :name, :id, :name, :include_blank => true %>
Спасибо, много, я пытался это с тех пор. – eluus
Нет проблем. Извините за начальную путаницу в первоначальном ответе. – miked
Что делать, если мы хотим передать некоторые параметры методу target_products. Мой вопрос: http://stackoverflow.com/questions/33581359/grouped-collection-select-custom-method, не могли бы вы помочь. – codemilan