2011-06-28 12 views
0

私は自分のプロダクトをどう扱うかを頭に入れようとしています< - >カテゴリの関係。 私は小さな店をレールに建てようとしています。カテゴリツリーからナビゲーションを作りたいと思っています。レールアプリケーションでカテゴリを扱う良い方法は何ですか?

ナビゲーションは次のようになります。

- Men 
|--Shirts 
|--Pants 
- Woman 
|--Shirts 
|--Dresses 
-Accessoires 

あなたがアイデアを得る...今

を、問題は、これらが同じモデル上のすべての異なるスコープ、製品のように見えるということです関連カテゴリの検索条件が異なります。

マイモデルこれまで:

class Product < ActiveRecord::Base 
    # validations... 
    has_many :categorizations 
    has_many :categories, :through => :categorizations 
    # more stuff ... 
end 

class Category < ActiveRecord::Base 
    acts_as_nested_set 
    has_many :categorizations 
    has_many :products, :through => :categorizations 
end 

class Categorization < ActiveRecord::Base 
    belongs_to :product 
    belongs_to :category 
end 

はまた、私は私の製品に複数のカテゴリを持っていると、おそらく製品を追加する場合は、「オン・ザ・フライ」の新しいカテゴリを作成することを可能にします。したがって、カテゴリ全体の管理はできるだけ簡単に行う必要があります。誰かが私を正しい方向に向けることができたり、チュートリアルにリンクすることができれば、ベストプラクティスか何かが本当に素晴らしいでしょう!

[OK]を

UPDATEは、今私はvirtual attributesを使用してその場でカテゴリを作成することができますので、ご質問は、私は特定のカテゴリの記事を検索するにはどのように?

@products = Product.scoped(:include => :categorizations, :conditions => {:category_names => params[:category]}) 

または

@products = Product.where("categorization = ?", params[:category]) 

しかしdidntの仕事の両方を:私が試した何

。基本的には1つのカテゴリのすべての製品が必要です。

答えて

0

私は結局、分類を使って多対多の関係を作成しました。このrailscastは、これを行う方法と、新しいカテゴリ(またはタグ)をオンザフライで作成する方法を完全に説明しています。彼らは私の製品概要にリンクさせるのカテゴリーを通じてIループの後

# app/views/products/index.html.erb 
<ul class="categories"> 
    <% for category in @categories %> 
     <li><%= link_to category.name, :action => "index" , :category => category.id %></li> 
    <% end %> 
    </ul> 

といずれかが存在する場合、コントローラには、私はカテゴリから製品を構築:

# products_controller.rb 
    def index 
    if params[:category] 
     @products = Category.find(params[:category]).products 
    else 
     @products = Product.scoped 
    end 
    @products = @products.where("title like ?", "%" + params[:title] + "%") if params[:title] 
    @products = @products.order('title').page(params[:page]).per(params[:per_page] ? params[:per_page] : 25) 
    @categories = Category.all 
    end 

確かにそれを行うよりエレガントな方法がありますが、これは今のところ悪いです..どんな改善も高く評価されました。

0

モデルでを使用して新しいカテゴリを作成すると同時に新しいカテゴリを作成できるようにすることができます。始めるためのドキュメントを見てください。

関連する問題