我正在尝试使用这个具有以下目标的Rails应用程序:
/foods/-呈现食物类别的列表(例如:面包,乳制品, cookies 等)/foods/breads/-呈现食品类别“面包”中的所有食品foods/breads/bagel-呈现Food属性的详细 View (在此示例中为Bagel)。

目前,我有两个带有关联 Controller 的模型:
Foods-包含食物列表(例如:百吉饼,米饭,吐司,浓茶 cookies 等),并设置为belongs_to单个食物猫
Food Categories-类别列表,例如“乳制品”,“面包” ...等,并设置为has_many :foods
我真的坚持如何实现自己的目标。我确实需要有关路由, Controller 操作和 View 的建议。

有什么建议么?

最佳答案

在您的routes.rb文件中,我将执行以下操作:

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

然后,我将按类别创建食品范围:
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

这应该使您不必执行3种 View :类别/索引,食品/索引和食品/展示。

关于ruby-on-rails - 铁路应用模型/ Controller 和路线组织,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5052585/

10-13 02:11