2012-03-26 15 views
0

こんにちは私は、Ruby on Railsを使用して私の電子商取引のWebサイトにカテゴリを設定しようとしています。たとえば、特定のカテゴリの製品を表示するページがあります私はカテゴリTシャツを持っているので、すべてのTシャツが表示されます。バックエンドでは、製品テーブルに外部キーcategory_idを割り当て、カテゴリのモデルには関係を設定することができますそれには多くの製品があり、製品モデルのためにそれはカテゴリーに属します。特定のカテゴリの製品を表示するにはどうすればよいですか?ここでRuby on Railsに特定のカテゴリの製品のページ

は私の現在のコードです:

ストアコントローラ

class StoreController < ApplicationController 
    skip_before_filter :authorize 

    def index 
    @cart = current_cart 
    @products = Product = Product.search(params[:search]).paginate(:page => params[:page], :per_page => 6) 
    end 
end 

カテゴリーコントローラ

class CategoriesController < ApplicationController 
    # GET /categories 
    # GET /categories.json 
    def index 
    @categories = Category.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @categories } 
    end 
    end 

    # GET /categories/1 
    # GET /categories/1.json 
    def show 
    @category = Category.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @category } 
    end 
    end 
end 
+0

特に、 'StoreController#index'のコードフォーマットで起こっているいくつかの非常に奇妙なことがあります。 – rfunduk

+0

Opps申し訳ありません私はそれを編集しました。 –

+0

あなたのコードはまだ壊れています。 'respond_to'はクラスメソッドではなく、' @ product'はとにかくそのコンテキストでは何もありません。あなたは3つの 'end'sを持っていることに注意してください。 'respond_to'パーツの周りにメソッドがないようです。 – rfunduk

答えて

0

は、私の知る限り、することはできません理由はありません1対多の関連付けを指定したときにRailsが提供するコレクションを使用してください:

@products = @category.products 
+0

私はそれを試してみましたが、この未定義のメソッドproductsをnilにします:NilClass –

+0

おそらく '@ category'はその時点でnilですか?それが存在し、カテゴリであることを確認してください。 – MrTheWalrus

+0

カテゴリを指定する必要がありますか?たとえば、Topというカテゴリがあり、データベースにcategory_name:Topとcategory_id:01という名前で格納されていますか? –

関連する問題