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: