3

次の目的を持つこのRailsアプリに取り組もうとしています:

/foods/- 食品カテゴリのリストをレンダリングします (例: パン、乳製品、ビスケットなど)
/foods/breads/- 食品カテゴリ「パン」内にあるすべての食品をレンダリングします
foods/breads/bagel- 食品のプロパティの詳細ビューをレンダリングします (この例ではベーグル) )。

現在、コントローラーが関連付けられた 2 つのモデルがあります。

Foodsbelongs_to- 食品のリスト (例: ベーグル、米、トースト、リッチ ティー ビスケットなど) が含まれ、単一の Food Catに設定されます

Food Categories- 「乳製品」、「パン」などのカテゴリのリスト & が設定されていますhas_many :foods

目標を達成する方法に本当にこだわっています。ルーティング、コントローラーのアクション、ビューに関するアドバイスが本当に必要です。

助言がありますか?

4

2 に答える 2

1

あなたの routes.rb ファイルでは、次のようにします。

match 'foods' => 'FoodCategories#index'
match 'foods/:category' => 'Foods#index'
match 'foods/:category/:name' => 'Foods#show'

次に、Foods のスコープをカテゴリ別に作成します。

class Food
  scope :by_category, lambda{ |category| joins(:categories).where('categories.name = ?', category) }
end

次に、FoodsController に 2 つのアクションがあります。

class FoodsController
  def index
    @foods = Food.by_category(params[:category])
  end

  def show
    @foods = Food.by_category(params[:category]).where('foods.name = ?', params[:name])
  end
end

そして、FoodCategoriesController の単一のアクション:

class FoodCategories
  def index
    @categories = Category.where(name: params[:category])
  end
end

これで、category/index、foods/index、foods/show の 3 つのビューを実装する必要が残ります。

于 2011-02-19T19:08:44.977 に答える
0

FoodモデルとFoodCategoryモデルを扱うFoodsControllerFoodCategoriesControllerが必要です。RESTful アプローチに従う場合、リストした URL 構成を実現するために必要なルートは次のようになります。

match '/foods' => 'food_categories#index'
match '/foods/:category_id' => 'food_categories#show'
match '/foods/:category_id/:food_id' => 'foods#show'

FoodCategoriesControllerには、 FoodCategory.find :allルックアップを実行してすべてのカテゴリを一覧表示するメソッドindexメソッドと、提供されたものに基づいてFoodCategoryをルックアップし、has_many 関係を介して関連付けられたすべての食品を表示するshowメソッドがあります。FoodControllerには、少なくとも関連付けられた Food インスタンスを取得して検索するshowメソッドがあります。 ここでは実際には必要ありませんが、ルーティング シュガーとしては優れています。:category_id:food_id:category_id

于 2011-02-19T18:58:51.163 に答える