What's the best way to solve this?

Hi,

Here's a situation: A product belongs to multiple categories and the categories are top menus of a site. I want to highlight the category of a product when the product detail page is loaded. If there's some context, I can determine which category should be highlighted. (For example, I can track the categories that a user selected). But sometimes there's no context (for example, the user visits the page directly without getting through categories). How can you solve this problem?

Thanks.

Sam

Hi,

Here's a situation: A product belongs to multiple categories and the categories are top menus of a site.

That does not make sense, do you mean product has_many categories, or more likely category has_many products and product belongs_to category.

I want to highlight the category of a product when the product detail page is loaded. If there's some context, I can determine which category should be highlighted. (For example, I can track the categories that a user selected). But sometimes there's no context (for example, the user visits the page directly without getting through categories).

If you have a product, @product say, then the the category of the product is @product.category, assuming you have setup the ActiveRecord relationships correctly.

Colin

Colin Law wrote:

Hi,

Here's a situation: A product belongs to multiple categories and the categories are top menus of a site.

That does not make sense, do you mean product has_many categories, or more likely category has_many products and product belongs_to category.

Sorry. I was not clear about this. Product and Category are m:n relationship. Actually there's a Categoryship model.

Colin Law wrote:

Hi,

Here's a situation: A product belongs to multiple categories and the categories are top menus of a site.

That does not make sense, do you mean product has_many categories, or more likely category has_many products and product belongs_to category.

Sorry. I was not clear about this. Product and Category are m:n relationship. Actually there's a Categoryship model.

It would be easier if you could just supply the relationships. I think you are saying category has_many products through categoryship and product has_many categories through categoryship also. In that case if you have a product then the categories are available as @product.categories. I am not sure what your question is.

Colin

Colin Law wrote:

category.

Sorry. I was not clear about this. Product and Category are m:n relationship. Actually there's a Categoryship model.

It would be easier if you could just supply the relationships. I think you are saying category has_many products through categoryship and product has_many categories through categoryship also. In that case if you have a product then the categories are available as @product.categories. I am not sure what your question is.

You are understanding the relationships correctly. The problem is that @product.categories is multiple. I need to highlight only 1 category for the product and show only 1 breadcrumb. If there's some path that the user took, I can select the category but if there's no such context, I don't know what to do. I can make my own policy but I want to know how other developers are doing.

Thanks.

Sam

So instead of   _products_ > _category_ > product

you could do   _products_ > { multiple categories } > product

where the { multiple categories } is a mouseover dropdown to show the list of relevant category links.

FWIW,

Hassan Schroeder wrote:

Well, some choices are to "highlight"

1) none of the categories 2) all of the relevant categories equally 3) one, based on some heuristic like "most used to access this product" 4) all relevant categories with differential highlighting (i.e. visual ranking)     using the measure from #3

I hesitate suggesting one without seeing the whole thing in context :slight_smile:

HTH,

Hassan Schroeder wrote: