首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rail应用模型/控制器和路由组织

Rail应用模型/控制器和路由组织
EN

Stack Overflow用户
提问于 2011-02-20 02:11:38
回答 2查看 109关注 0票数 3

我正在尝试开发这个Rails应用程序,它有以下目标:

/foods/ -呈现食物类别的列表(例如:面包、乳制品、Biscuits...etc)

/foods/breads/ -呈现食品类别“面包”中的所有食品

foods/breads/bagel -渲染食物属性的详细视图(在本例中为百吉饼)。

目前,我有两个带有相关控制器的模型:

Foods -包含食物列表(例如:百吉饼、米饭、吐司、富茶biscuit...etc),并设置为belongs_to一只食品猫

Food Categories -将“奶制品”、“面包”等类别列表...etc&设置为has_many :foods

我真的卡在如何实现我的目标上了。我真的需要关于路由、控制器操作和视图的建议。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-20 03:08:45

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

代码语言:javascript
复制
match 'foods' => 'FoodCategories#index'
match 'foods/:category' => 'Foods#index'
match 'foods/:category/:name' => 'Foods#show'

然后我将按类别为Foods创建一个作用域:

代码语言:javascript
复制
class Food
  scope :by_category, lambda{ |category| joins(:categories).where('categories.name = ?', category) }
end

然后我会在你的FoodsController中有两个动作:

代码语言:javascript
复制
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中的一个动作:

代码语言:javascript
复制
class FoodCategories
  def index
    @categories = Category.where(name: params[:category])
  end
end

这让你不得不实现3个视图:类别/索引,食物/索引和食物/显示。

票数 1
EN

Stack Overflow用户

发布于 2011-02-20 02:58:51

你应该有一个处理食物和FoodCategory模型的FoodsController和FoodCategoriesController。如果您遵循RESTful方法,则实现您列出的url配置所需的路由如下:

代码语言:javascript
复制
match '/foods' => 'food_categories#index'
match '/foods/:category_id' => 'food_categories#show'
match '/foods/:category_id/:food_id' => 'foods#show'

您的FoodCategoriesController将具有索引方法,它通过执行FoodCategory.find :all lookup列出所有类别,以及显示方法,它将根据提供的:category_id查找FoodCategory,并通过has_many关系显示与其关联的所有食品。您的FoodController将具有一个显示方法,该方法至少将获取:food_id并查找与其相关联的实例。:category_id在这里并不是必须的,但它是一个很好的路由工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5052585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档